tensorflow学习笔记(6)--- 训练模型

在神经网络优化算法中,用的最多的是反向传播算法。


通过tensorflow实现反向传播算法的第一步是使用tensorflow来表达一个batch, tensorflow中提供了placeholder机制用于提供输入数据。
placeholder相当于定义了一个位置,这个位置中的数据在程序运行时再指定。这样在程序中只需要将数据通过placeholder传入计算图中。
通过placeholder实现前向传播:

import tensorflow as tf


w1=tf.Variable(tf.random_normal([2,3],stddev=1))
w2=tf.Variable(tf.random_normal([3,1],stddev=1))


#定义placeholder
x=tf.placeholder(tf.float32,shape=(1,2),name="input")#维度:二维数组,长度为1
a=tf.matmul(x,w1)
y=tf.matmul(a,w2)


sess=tf.Session()
init_op=tf.initialize_all_variables()
sess.run(init_op)


print(sess.run(y,feed_dict={x:[[0.7,0.9]]}))
在得到了一个batch的前向传播结果后,需要定义一个损失函数来说明此时预测值与真实值的差距。然后通过反向传播算法来调整神经网络参数的取值使得差距变小。
#定义损失函数
cross_entropy=-tf.reduce_mean(
y*tf.log(tf.clip_by_value(y,1e-10,1.0))
)
#定义学习率
learning_rate=0.001
#定义反向传播算法来优化参数
train_step=\
tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)
在上述代码中,cross_entropy定义了真实值与预测值之间的交叉熵,是分类问题中一个常见的损失函数。
train_step定义了反向传播的优化方法,运行sess.run(train_step)可以对所有变量进行优化,使得损失函数更小。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值