tensorflow官方教程:重新训练模型的最后一层,以应对新分类
2018-01-16 13:55
801 查看
tensorflow官方教程:重新训练模型的最后一层,以应对新分类
本文主要包含如下内容:tensorflow官方教程重新训练模型的最后一层以应对新分类
针对Flowers数据集重新训练Inception模型
针对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
执行分类测试:至今我没有跑通,如果你过了,请评论一下:
相关文章推荐
- tensorflow学习笔记十六:tensorflow官方文档学习 如何训练Inception v3模型最后一层
- 如何重新训练Tensorflow图像分类模型
- Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_训练模型
- Tensorflow学习教程------利用卷积神经网络对mnist数据集进行分类_利用训练好的模型进行分类
- 利用TensorFlow训练简单的二分类神经网络模型的方法
- TENSORFLOW官方文档-MNIST机器学习入门-训练模型
- Tensorflow利用训练好的Inception模型进行图像识别分类
- MXNet官方文档教程(4):使用预训练好的模型
- Tensorflow学习(7)用别人训练好的模型进行图像分类
- TensorFlow全流程样板代码:以ai challenger 场景分类和slim预训练模型为例
- caffe训练好模型的特征提取(fc7,最后一层全连接层)
- tensorflow 学习笔记(十二)- 用别人训练好的模型来进行图像分类
- tensorflow训练自己的数据集实现CNN图像分类2(保存模型&测试单张图片)
- tensorflow官方教程:运用模型对类别进行预测
- tensorflow 1.0 学习:用别人训练好的模型来进行图像分类
- 利用TensorFlow训练简单的二分类神经网络模型
- MXNet官方文档中文版教程(8):使用预训练模型预测
- Tensorflow学习教程------读取数据、建立网络、训练模型,小巧而完整的代码示例
- Tensorflow 的安装和用InceptionV3训练新的图像分类模型
- TensorFlow教程03:MNIST实验——回归的实现、训练和模型评估