《TensorFlow实战Google深度学习框架》读后小结(二)

本部分是书中的第五章内容。

第五章  MNIST数字识别问题

1. TensorFlow提供了封装好的MNIST数据处理类,在这里将直接使用这个类,将数据从原始的数据包中解析成训练和测试神经网络所使用的格式。

每一张图片是一个28*28的大小,处理后的图片是一个长度是784的一维数组。数组中的数字大小在[0 1]之间。

2. 训练、验证和测试

使用神经网络进行训练数据集。

因为神经网络训练的时间本身比较长,所以若采用交叉验证集进行验证模型的效果,则会花费很长的时间。所以,在海量数据的时候一般采用验证数据集的方式来评测模型的效果

调整神经网络的结构对于最终的正确率有很大的影响。由于本身数据集不是特别大,所以使用滑动平均模型、指数衰减的学习率和正则化所带来的正确率的提升不是很明显。

3. 变量管理

当神经网络的结构更加复杂、参数更多时,需要一种更好的方式来传递和管理神经网络的参数。TensorFlow提供了通过变量名称的方式来创建或获取一个变量的机制。通过这个机制,可以在不同的函数中直接通过变量的名字来使用变量,而不需要将变量通过参数的形式传递。这种机制是通过tf.get_variable和tf.variable_scope函数来实现的。

(1) tf.get_variable在用于创建变量时,是和tf.Variable等价的。区别在于指定变量名称的参数,在后者中变量名称是一个可选的参数,而在前者中是一个必选的参数。

(2)tf.variable_scope函数生成一个上下文管理器,来控制tf.get_variable获取一个已经创建的变量。

4. TensorFlow模型持久化

为了让训练的结果可以复用,需要将训练得到的神经网络模型持久化。

(1)TensorFlow提供一个API用于保存和还原一个神经网络。这个API是tf.train.Saver类。

TensorFlow模型一般会被保存在后缀是.ckpt的文件中。在这个文件目录之下有三个文件。第一个文件保存了计算图的结构。第二个文件保存了TensorFlow中每一个变量的取值。最后一个文件保存了一个目录之下的所有的模型文件列表。

(2)持久化是由上面说的三个文件来完成的。

5. 结合3和4介绍示例MNIST(结合3中的变量管理机制和4中的持久化机制)

本节将前向传播过程抽象成一个函数,因为在训练和测试中被用到,所以按照函数的方式使用起来更方便。

代码被拆分成为三个程序:程序1定义了前向传播过程和神经网络中的参数;

                                           程序2定义了神经网络的训练过程(关注正则损失P127);

                                           程序3定义了测试过程(不关注正则损失P130,所以设置参数是None。这里是在滑动平均模型上做测试)。将训练和测试的过程分来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值