美文网首页
20201018-Tensorflow-3

20201018-Tensorflow-3

作者: 野山羊骑士 | 来源:发表于2020-10-18 09:07 被阅读0次

全部基于Tensorflow=1.14.0

Tensorflow 实例

一个简单的神经网络实例,用于入门。

一个输入层1个,隐藏层10个,输出层1个的神经元。这个神经元数量还是需要思考一下的。为什么是1个?

import tensorflow as tf
import numpy as np

# 一个创建层的函数,可以用来创建隐层,也可以是输出层
def add_layer(inputs,in_size,out_size,activation_function=None):
    Weights = tf.Variable(tf.random_normal([in_size,out_size]))
    biases = tf.Variable(tf.zeros([1,out_size]))
    
    Wx_plus_b = tf.matmul(inputs,Weights) + biases
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    return outputs
x_data = np.linspace(-1,1,300)[:,np.newaxis]
noise = np.random.normal(0,0.05,x_data.shape)
y_data = np.square(x_data)-0.5+noise

xs = tf.placeholder(tf.float32,[None,1])
ys = tf.placeholder(tf.float32,[None,1])

# 隐层10个神经元
l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)

# 输出层
prediction = add_layer(l1,10,1,activation_function=None)

loss = tf.reduce_mean(tf.reduce_sum(tf.square(y_data - prediction),reduction_indices=[1]))

train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

plot_y_li = []  # 用于画图

with tf.Session() as sess:
    init = tf.global_variables_initializer()
    sess.run(init)
    
    for i in range(1000):
        sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
        if i%50==0:
            prediction_y = sess.run(prediction,feed_dict={xs:x_data,ys:y_data}) # 用于画图
            plot_y_li.append(prediction_y)                                      # 用于画图
            print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
0.102945946
0.007416652
0.0055744103
0.004574176
0.0040580644
0.0037603306
0.0035633855
0.0034116744
0.0032895773
0.003196809
0.003112991
0.0030539748
0.0030080697
0.0029651488
0.002928619
0.0029001895
0.0028783926
0.0028591845
0.0028434037
0.0028303121
# 画图展示
import matplotlib
import matplotlib.pyplot as plt
import matplotlib.animation as animation
 
# 指定渲染环境
%matplotlib notebook
# %matplotlib inline

# 先画原始的静态部分,也就是x_data 与 y_data的散点图
fig = plt.figure()
plt.scatter(x_data,y_data)
plt.grid(ls='--')
plt.show()
图片.png
# 加入动态点

def update_plot(num):
    """
    更新图像,num为当前动图第几帧
    """
    point_ani.set_data(x_data,plot_y_li[num])
    return point_ani,

# 静态图
fig = plt.figure()
plt.scatter(x_data,y_data)
plt.grid(ls='--')
point_ani, = plt.plot(x_data[0],y_data[0],'ro')
print(point_ani)

ani = animation.FuncAnimation(fig,update_plot,frames=np.arange(0,100),interval=100,blit=True)
# 首先定义一个Updata_plot函数,用于绘制途中的数据点。此函数的输入参数num代表当前动画的第几帧,函数的返回,即为我们需要更新的对象,
# 需要特别注意的是:return point_ani,这个都好一定加上,否则动画不能正常显示。
# 当然这里操作的点对象point_ani 我们一般会提前声明得到:point_ani, = plt.plot(x[0],y[0],'ro').
# 接下来我们就是将此函数传入我们的FuncAnimation函数中,函数的参数说明可以参见官网,这里简要说明几个参数:
# fig:即为我们的绘制图像
# updata_plot 更新动画的函数
# np.arange(0,100):动画帧数,这需要是一个迭代的对象
# interval参数:动画的时间间隔
# blit参数:是否开启某种动画的渲染。
plt.show()

# ani.save('tf3_regression.gif', fps=2, writer='pillow')

tf3_regression.gif

相关文章

  • 20201018-Tensorflow-3

    全部基于Tensorflow=1.14.0 Tensorflow 实例 一个简单的神经网络实例,用于入门。 一个输...

网友评论

      本文标题:20201018-Tensorflow-3

      本文链接:https://www.haomeiwen.com/subject/qczfmktx.html