tensorflow 学习笔记4 搭建神经网络基本流程

来源:互联网 发布:沈阳开盘数据恢复 编辑:程序博客网 时间:2024/06/05 14:35

搭建神经网络主要有以下几步:

1.训练的数据
2.定义节点准备接收数据
3.定义神经层:隐藏层和预测层
4.定义 loss 表达式
5.选择 optimizer 使 loss 达到最小

import tensorflow as tfimport numpy as np# 添加层def add_layer(inputs,in_size,out_size,activation_function):    # add one more layer and return the output of this layer    #变量Weights in_size行 out_size列    Weights=tf.Variable(tf.random_normal([in_size,out_size]))    #变量biases 1行 out_size列 由于biases最好不为0加上0.1    biases=tf.Variable(tf.zeros([1,out_size])+0.1)    #Wx_plus_b=inputs*Weights+biases    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值# 1.生成训练的数据# Make up some real datax_data=np.linspace(-1,1,300)[:,np.newaxis]#噪声 均值为mean 0,标准差为stdev的高斯随机数 0.05,size与x一致noise = np.random.normal(0, 0.05, x_data.shape)#y值 x的平方减去0.5  加上噪声y_data=np.square(x_data)-0.5+noise# 2.定义节点准备接收数据# define placeholder for inputs to network#placeholder x与y 类型tf.float32,输入的行任意,列为1xs=tf.placeholder(tf.float32,[None,1])ys=tf.placeholder(tf.float32,[None,1])# 3.定义神经层:隐藏层和预测层# add hidden layer 输入值是 xs,为1个神经元,在隐藏层有 10 个神经元,激活函数为relul1=add_layer(xs,1,10,activation_function=tf.nn.relu)# add output layer 输入值是隐藏层 l1,在预测层输出 1 个结果,预测层是输出层,参数为l1输入值,10个输入神经元,1个输出神经元,激活函数为Noneprediction=add_layer(l1,10,1,activation_function=None)# 4.定义 loss 表达式# the error between prediciton and real# datareduction_indices是指沿tensor的哪些维度求和loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))# 5.选择 optimizer 使 loss 达到最小# 这一行定义了用什么方式去减少 loss,学习率是 0.1#选择 Gradient Descent 这个最基本的 Optimizertrain_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)# important step 对所有变量进行初始化 前面是定义,在运行模型前先要初始化所有变量init=tf.initialize_all_variables()sess=tf.Session()# 上面定义的都没有运算,直到 sess.run 才会开始运算sess.run(init)# 迭代 1000 次学习,sess.run optimizerfor i in range(1000):    # training train_step 和 loss 都是由 placeholder 定义的运算,所以这里要用 feed 传入参数    sess.run(train_step,feed_dict={xs:x_data,ys:y_data})    if i%50==0:        print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
结果输出损失函数值:

0.3402380.01304770.009199540.006560350.00587860.005523450.005229620.004981960.004780040.00460190.004433020.004298280.004184430.004088150.003990370.003895030.003807640.003715890.003623690.00353318


阅读全文
0 0
原创粉丝点击