本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

报码:【j2开奖】资源 | TensorFlow极简教程:创建、保存和恢复机器学习模型(3)

时间:2017-03-19 19:34来源:118图库 作者:开奖直播现场 点击:
是的,但你需要对命名空间(namespace)倍加小心。好的一点是,这种方法简化了一切:例如,你可以加载预训练的 VGG-16,访问图中的任何节点,嵌入自己

是的,但你需要对命名空间(namespace)倍加小心。好的一点是,这种方法简化了一切:例如,你可以加载预训练的 VGG-16,访问图中的任何节点,嵌入自己的操作和训练整个图!

如果你只想微调(fine-tune)节点,你可以在任意地方停止梯度来避免训练整个图。

  import tensorflow as tf

  # Load the VGG-16 model in the default graph

  vgg_saver = tf.train.import_meta_graph(dir + 'gg/resultsgg-16.meta')

  # Access the graph

  vgg_graph = tf.get_default_graph()

  # Retrieve VGG inputs

  self.x_plh = vgg_graph.get_tensor_by_name('input:0')

  # Choose which node you want to connect your own graph

  output_conv =vgg_graph.get_tensor_by_name('conv1_2:0')

  # output_conv =vgg_graph.get_tensor_by_name('conv2_2:0')

  # output_conv =vgg_graph.get_tensor_by_name('conv3_3:0')

  # output_conv =vgg_graph.get_tensor_by_name('conv4_3:0')

  # output_conv =vgg_graph.get_tensor_by_name('conv5_3:0')

  # Stop the gradient for fine-tuning

  output_conv_sg = tf.stop_gradient(output_conv) # It's an identity function

  # Build further operations

  output_conv_shape = output_conv_sg.get_shape().as_list()

  W1 = tf.get_variable('W1', shape=[1, 1, output_conv_shape[3], 32], initializer=tf.random_normal_initializer(stddev=1e-1))

  b1 = tf.get_variable('b1', shape=[32], initializer=tf.constant_initializer(0.1))

  z1 = tf.nn.conv2d(output_conv_sg, W1, strides=[1, 1, 1, 1], padding='SAME') + b1

  a = tf.nn.relu(z1)

附录:更多关于 TF 数据生态系统的内容

我们在这里谈论谷歌,他们主要使用内部构建的工具来处理他们的工作,所以数据保存的格式为 ProtoBuff 也是不奇怪的。

协议缓冲区

协议缓冲区(Protocol Buffer/简写 Protobufs)是 TF 有效存储和传输数据的常用方式。

我不在这里详细介绍它,但可以把它当成一个更快的 JSON 格式,当你在存储/传输时需要节省空间/带宽,你可以压缩它。简而言之,你可以使用 Protobufs 作为:

一种未压缩的、人性化的文本格式,扩展名为 .pbtxt

一种压缩的、机器友好的二进制格式,扩展名为 .pb 或根本没有扩展名

这就像在开发设置中使用 JSON,并且在迁移到生产环境时为了提高效率而压缩数据一样。用 Protobufs 可以做更多的事情,如果你有兴趣可以查看教程

整洁的小技巧:在张量流中处理 protobufs 的所有操作都有这个表示「协议缓冲区定义」的「_def」后缀。例如,要加载保存的图的 protobufs,atv,可以使用函数:tf.import_graph_def。要获取当前图作为 protobufs,可以使用:Graph.as_graph_def()。

文件的架构

回到 TF,当保存你的数据时,你会得到 5 种不同类型的文件:

「检查点」文件

「事件(event)」文件

「文本 protobufs」文件

一些「chkp」文件

一些「元 chkp」文件

现在让我们休息一下。当你想到,当你在做机器学习时可能会保存什么?你可以保存模型的架构和与其关联的学习到的权重。你可能希望在训练或事件整个训练架构时保存一些训练特征,如模型的损失(loss)和准确率(accuracy)。你可能希望保存超参数和其它操作,以便之后重新启动训练或重复实现结果。这正是 TensorFlow 的作用。

在这里,检查点文件的三种类型用于存储模型及其权重有关的压缩后数据。

检查点文件只是一个簿记文件,你可以结合使用高级辅助程序加载不同时间保存的 chkp 文件。

元 chkp 文件包含模型的压缩 Protobufs 图以及所有与之关联的元数据(集合、学习速率、操作等)。

chkp 文件保存数据(权重)本身(这一个通常是相当大的大小)。

如果你想做一些调试,pbtxt 文件只是模型的非压缩 Protobufs 图。

最后,事件文件在 TensorBoard 中存储了所有你需要用来可视化模型和训练时测量的所有数据。这与保存/恢复模型本身无关。

下面让我们看一下结果文件夹的屏幕截图:

报码:【j2开奖】资源 | TensorFlow极简教程:创建、保存和恢复机器学习模型

一些随机训练的结果文件夹的屏幕截图

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容