转自:https://blog.csdn.net/weixin_41770169/article/details/80330581

github地址:https://github.com/1269215860/vgg16_flowers.git

其实上面的文章已经写的很详细了,但是还有一点小小的问题,通过参考其他的代码,将其进行补充,这样完整的程序就可以运行了。

下面我就主要说说进行补充的地方:

补充1:

如果按照原文章的步骤一步步进行,在进行到这步的时候,会有报错,会提示找不到labels和codes文件,原因是我们在运行上一步的代码没有对其进行保存。

# read codes and labels from file
import csv with open('labels') as f:reader = csv.reader(f, delimiter='\n')labels = np.array([each for each in reader if len(each) > 0]).squeeze()
with open('codes') as f:codes = np.fromfile(f, dtype=np.float32)codes = codes.reshape((len(labels), -1))

我们只需要在这段上面的代码处,对输出的labels和codes文件进行保存处理即可。如下所示:

#将图像批量batches通过VGG模型,将输出作为新的输入:
# Set the batch size higher if you can fit in in your GPU memory
batch_size = 10
codes_list = []
labels = []
batch = []codes = Nonewith tf.Session() as sess: vgg = vgg16.Vgg16()input_ = tf.placeholder(tf.float32, [None, 224, 224, 3])with tf.name_scope("content_vgg"):vgg.build(input_)for each in classes:print("Starting {} images".format(each))class_path = data_dir + eachfiles = os.listdir(class_path)for ii, file in enumerate(files, 1):# Add images to the current batch# utils.load_image crops the input images for us, from the centerimg = utils.load_image(os.path.join(class_path, file))batch.append(img.reshape((1, 224, 224, 3)))labels.append(each)# Running the batch through the network to get the codesif ii % batch_size == 0 or ii == len(files):images = np.concatenate(batch)feed_dict = {input_: images}codes_batch = sess.run(vgg.relu6, feed_dict=feed_dict)# Here I'm building an array of the codesif codes is None:codes = codes_batchelse:codes = np.concatenate((codes, codes_batch))# Reset to start building the next batchbatch = []print('{} images processed'.format(ii))#这里就是添加的保存的代码#这样我们就可以得到一个 codes 数组,和一个 labels 数组,分别存储了所有花朵的特征值和类别。with open('codes', 'w') as f:codes.tofile(f)import csvwith open('labels', 'w') as f:writer = csv.writer(f, delimiter='\n')writer.writerow(labels)

接下来就会在文件所在的目录内自动生成labels和codes文件,然后继续原文章的步骤进行就可以实现最后的结果。

补充2:

文章结尾处,作者是以柱状图的形式来展示预测结果的,现在我们以只显示概率和品种的形式来展示结果。jin

#将数组转换为list
predic_list = prediction.tolist()
print(type(predic_list))
index = predic_list.index(max(predic_list))
print(lb.classes_[index]+":"+str(max(predic_list)))

这样就可以满足部分同学对概率显示预测结果的需求啦。

今天第一次写,以后会继续坚持,加油。

tensorflow迁移学习:VGG16花朵分类相关推荐

  1. 【美团云】TensorFlow 迁移学习识花实战案例(Transfer Learning)

    TensorFlow 迁移学习识花实战案例(Transfer Learning) TensorFlow 迁移学习识花实战案例 什么是迁移学习 为什么要使用迁移学习 识花模型中迁移学习的思路 VGG模型 ...

  2. 迁移学习后续——中草药分类(之简单学习代码编程过程)

    文章目录 特征提取代码 训练测试代码 全连接层模型保存代码 图片预测展示 简易迁移学习代码(万金油代码) 此代码是对上篇代码编写的一个简单的心路历程以及代码.模型,数据集与上篇一致没有变,这边用了五个 ...

  3. Tensorflow迁移学习判定图片中人物打电话-李豪-专题视频课程

    Tensorflow迁移学习判定图片中人物打电话-1095人已学习 课程介绍         带大家从应用Tensorflow的迁移学习技术来做图片分类,实现判定图片中人物是否打电话 .课程中带大家在 ...

  4. 基于深度迁移学习进行时间序列分类

    在碎片化阅读充斥眼球的时代,越来越少的人会去关注每篇论文背后的探索和思考. 在这个栏目里,你会快速 get 每篇精选论文的亮点和痛点,时刻紧跟 AI 前沿成果. 点击本文底部的「阅读原文」即刻加入社区 ...

  5. 婴儿哭声分类识别实现(准确率99.3%)(深度学习、迁移学习、音频分类、tensorflow)

    一.项目概述 本文是婴儿哭声分类识别系统化的主体部分,主要解决智能音频分类的问题.基于此目标,本文查找了大量资料,并做了大量实验,最后获得了一个婴儿哭声分类识别准确率相对较高的深度学习模型--迁移学习 ...

  6. TensorFlow迁移学习的识别花试验

    最近学习了TensorFlow,发现一个模型叫vgg16,然后搭建环境跑了一下,觉得十分神奇,而且准确率十分的高.又上了一节选修课,关于人工智能,老师让做一个关于人工智能的试验,于是觉得vgg16很不 ...

  7. tensorflow 迁移学习_基于 TensorFlow.js 1.5 的迁移学习图像分类器

    在黑胡桃社区的体验案例中,有一个"人工智能教练",它其实是一个自定义的图像分类器.使用 TensorFlow.js 这个强大而灵活的 Javascript 机器学习库可以很轻松地构 ...

  8. ML.NET 示例:图像分类模型训练-首选API(基于原生TensorFlow迁移学习)

    ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法 Microsoft.ML 1.5.0 动态API 最新 控制台应用程序和Web应用程序 图片文件 图像分类 基 ...

  9. 【学习笔记】pytorch迁移学习-猫狗分类实战

    1.迁移学习入门 什么是迁移学习:在深度神经网络算法的引用过程中,如果我们面对的是数据规模较大的问题,那么在搭建好深度神经网络模型后,我们势必要花费大量的算力和时间去训练模型和优化参数,最后耗费了这么 ...

  10. Tensorflow迁移学习实现猫狗大战

    前言:本人初涉深度学习,水平十分有限,文章错谬之处敬请告知,不胜感激.同时希望同道之人多多交流. 文章目录 一.项目概述 1. 项目介绍 2. 评价指标 二.项目分析 1. 数据的探索 2. 图片尺寸 ...

最新文章

  1. Leangoo大讲堂:免费Scrum敏捷开发实战—武汉站
  2. Hadoop生态圈-hive编写自定义函数
  3. 为什么传值时加号变成了空格_为什么中英文字间距不一样?我想谈谈我的理解...
  4. 【Vs2015】 常用字体的设置
  5. 已知三个用不同数制表示的整数_数学一轮复习26,数列的概念及简单表示法,常用方法及具体策略...
  6. 基于CSE的微服务架构实践-Spring Cloud技术栈选型
  7. C#如何与OPC连接
  8. hexo添加_hexo 添加标签和分类
  9. 如何使用计算机勾绘汇水面积,第八章 地形测量_同济大学:测量学(八)_ppt_大学课件预览_高等教育资讯网...
  10. 详解LVDS通信协议
  11. lattice开发错误集合
  12. ios vue 添加本地音乐_苹果手机vue怎么添加自己的音乐
  13. 这么用 if-else,小鹿差点被辞退!
  14. stlink故障修复
  15. EChat(简易聊天项目)三、聊天界面UI实现
  16. oracle 数据库如何获取一条sql语句执行所消耗耗费的时间?
  17. CVE 2013-2094 exploit 实验笔记
  18. java中这些判断空的用法,太优雅了
  19. Spring详解—— IOC 和 DI 区别
  20. 关于scn的深入理解

热门文章

  1. 纪念当年我的第一个python程序“hello world”
  2. (java)leetcode852 山脉数组的封顶索引(二分查找法找出数组中最大值的下标)(Peak Index in a Mountain Array)
  3. 从简单的选择排序入手,深刻理解程序
  4. selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate elemen
  5. dell服务器连接显示器黑屏,显示器维修-DELL 通病:开机黑屏-视显光电
  6. 面试题:设计模式记不住,来看看怎么办?
  7. 计算机概述.ppt,一计算机概述.ppt
  8. 可解释性机器学习_Feature Importance、Permutation Importance、SHAP
  9. 本地化openbravo
  10. android 按钮并排左右_在android studio中并排对齐按钮