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

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

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

import tensorflow as tf
import 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 data
x_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,输入的行任意,列为1
xs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])
# 3.定义神经层:隐藏层和预测层
# add hidden layer 输入值是 xs,为1个神经元,在隐藏层有 10 个神经元,激活函数为relu
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
# add output layer 输入值是隐藏层 l1,在预测层输出 1 个结果,预测层是输出层,参数为l1输入值,10个输入神经元,1个输出神经元,激活函数为None
prediction=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 这个最基本的 Optimizer
train_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 optimizer
for 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.340238
0.0130477
0.00919954
0.00656035
0.0058786
0.00552345
0.00522962
0.00498196
0.00478004
0.0046019
0.00443302
0.00429828
0.00418443
0.00408815
0.00399037
0.00389503
0.00380764
0.00371589
0.00362369
0.00353318


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值