tensorflow官方教程:重新训练模型的最后一层,以应对新分类

tensorflow官方教程:重新训练模型的最后一层,以应对新分类


本文主要包含如下内容:


针对Flowers数据集,重新训练Inception模型


  
  首先,在训练开始之前,你需要准备数据集,按照如下操作下载数据集.

cd ~
curl -O http://download.tensorflow.org/example_images/flower_photos.tgz
tar xzf flower_photos.tgz

  可以看到,flower_photos文件夹中有5个分类.
  用TF提供的二进制重训练工具重新训练,在tensorflow源码的根目录下执行:

sudo bazel build tensorflow/examples/image_retraining:retrain
bazel-bin/tensorflow/examples/image_retraining/retrain --image_dir ~/flower_photos

  同样的,我们可以使用python直接运行相应的py程序,运行代码如下:

python retrain.py --image_dir ~/flower_photos

  该脚本加载预训练模型Inception V3, 移除原先模型的最后一层, 然后在数据集上重新训练. 这里运用了迁移学习的思想.

  注意:脚本的第一阶段会分析所有图像并计算每张图像的Bottleneck。bottleneck是我们经常用于描述网络最后一层之前的那些实际完成分类任务的网络层的一种非正式称谓。其中,倒数第二层的输出结果对于描述区分需要分类的类别已经足够。由于每张图像在训练和计算bottleneck值的过程中重复使用多次,这极为耗时,将这些数据缓存在磁盘上有助于加速整个过程以避免重复计算。

# retrain.py代码思路:
# 首先读取网络相关参数和预训练模型,根据设置比例产生对应的训练数据、测试数据、验证数据。
# 接下来,添加新层(即最后一层),这里将之前模型的倒数第二层输出作为该层的输入,然后根据类别标签
# 构造权重与偏置;定义交叉熵损失,获得最终的输出。同时,定义公式计算准确率。
# 网络初始化之后,首先计算模型的倒数第二层输出Bottleneck,并保存到磁盘,避免重复计算从而加速网络收敛。
# 最后很正常训练网络模型一样,运用tf.Session()使模型收敛。

  训练结果可视化:一旦TensorBoard正在运行,浏览您的Web浏览器到localhost:6006以查看TensorBoard.

tensorboard --logdir /tmp/retrain_logs

  执行分类测试:至今我没有跑通,如果你过了,请评论一下

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值