4.Transfer Learning

Intro

这是深度学习第4课。

在本课程结束时,您将能够使用迁移学习为您的自定义目标构建高度准确的计算机视觉模型,即使您的数据相对较少。

Lesson

[1]

from IPython.display import YouTubeVideo
YouTubeVideo('mPFq5KMxKVw', width=800, height=450)

 

Sample Code

Specify Model

[2]

from tensorflow.python.keras.applications import ResNet50
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2Dnum_classes = 2
resnet_weights_path = '../input/resnet50/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5'my_new_model = Sequential()
my_new_model.add(ResNet50(include_top=False, pooling='avg', weights=resnet_weights_path))
my_new_model.add(Dense(num_classes, activation='softmax'))# Say not to train first layer (ResNet) model. It is already trained
my_new_model.layers[0].trainable = False

Compile Model

[3]

my_new_model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])

Fit Model

[4]

from tensorflow.python.keras.applications.resnet50 import preprocess_input
from tensorflow.python.keras.preprocessing.image import ImageDataGeneratorimage_size = 224
data_generator = ImageDataGenerator(preprocessing_function=preprocess_input)train_generator = data_generator.flow_from_directory('../input/urban-and-rural-photos/rural_and_urban_photos/train',target_size=(image_size, image_size),batch_size=24,class_mode='categorical')validation_generator = data_generator.flow_from_directory('../input/urban-and-rural-photos/rural_and_urban_photos/val',target_size=(image_size, image_size),class_mode='categorical')my_new_model.fit_generator(train_generator,steps_per_epoch=3,validation_data=validation_generator,validation_steps=1)
Found 72 images belonging to 2 classes.
Found 20 images belonging to 2 classes.
Epoch 1/1
3/3 [==============================] - 29s 10s/step - loss: 0.5130 - acc: 0.8056 - val_loss: 0.3568 - val_acc: 0.9000<tensorflow.python.keras._impl.keras.callbacks.History at 0x7f9f5bc56a20>

Note on Results:

在此阶段,打印出的验证准确度可能比训练准确度更好。 这一开始可能令人费解。
之所以出现这种情况,是因为随着网络的改进,在多个点计算训练精度(卷积中的数字正在更新以使模型更准确)。 当模型看到第一个训练图像时,网络是不准确的,因为权重还没有被训练/改进。 
在模型完成所有数据后计算验证损失和准确度度量。 因此,在计算这些分数时,网络已经过全面训练。
这在实践中不是一个严重的问题,我们不会担心它。

 

Your Turn

写下您自己的内核来进行迁移学习。

Exercise:Using Transfer Learning

Exercise Introduction

拍摄我们深度学习视频的摄像师提到了一个我们可以通过深度学习解决的令人沮丧的问题。

他提供扫描照片和幻灯片的服务,以数字方式存储它们。他使用的机器能够快速扫描许多照片。但是根据原始照片的方向,许多图像都是横向数字化的。他目前花了很多时间寻找哪些照片需要侧向旋转,所以他可以修复它们。

如果这个过程可以自动化,那将节省他很多时间。在本练习中,您将构建一个模型,用于区分哪些照片是横向的,哪些照片是竖向的。

如果您打算在商业上销售此服务,则可以使用大型数据集来训练模型。但即使是一个小数据集,我们也会取得巨大成功。我们将使用一个小型关于狗的图片数据集,其中一半是横向旋转。

指定和编译模型看起来与您看到的示例相同。但是您需要进行一些更改以适应模型。

1)Specify the Model

由于这是您第一次,您将无法从头开始创建。

我们已经填写了您需要的大部分代码,但是将一些关键部分留空了。

在下面的代码中填写(标有____)。 然后取消注释这些行并运行单元格。

[1]

from tensorflow.python.keras.applications import ResNet50
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Dense, Flatten, GlobalAveragePooling2D# num_classes is the number of categories your model chooses between for each prediction
# num_classes = ____
resnet_weights_path = '../input/resnet50/resnet50_weights_tf_dim_ordering_tf_kernels_notop.h5'# my_new_model = Sequential()
# my_new_model.add(ResNet50(include_top=False, pooling='avg', weights=resnet_weights_path))
# my_new_model.add(Dense(num_classes, activation='softmax'))# The value below is either True or False.  If you choose the wrong answer, your modeling results
# won't be very good.  Recall whether the first layer should be trained/changed or not.
# my_new_model.layers[0].trainable = ____

2)Compile the Model

我们再次提供了大部分代码,并留下了一个非常重要的部分。 填写空白(标有____)。 然后取消注释该行代码并运行单元格。

[2]

# We are calling the compile command for some python object. 
# Which python object is being compiled? Fill in the answer so the compile command works.
# ____.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])

3)Fit Model

您的训练数据位于../input/dogs-gone-sideways/images/train目录中。 验证数据在../input/dogs-gone-sideways/images/val中。 设置train_generator和validation_generator时使用该信息。

您有220张训练数据图像和217张验证数据。 对于训练生成器,选择批量大小为10。在fit_generator调用中找出steps_per_epoch的相应值? 它与示例中的不同。

填写所有空白(再次标记为____)。 然后取消注释每一行并运行代码单元格。 观察您的模型训练权重并提高准确度。

【3】

from tensorflow.python.keras.applications.resnet50 import preprocess_input
from tensorflow.python.keras.preprocessing.image import ImageDataGeneratorimage_size = 224
data_generator = ImageDataGenerator(preprocess_input)#train_generator = data_generator.flow_from_directory(
#        directory = ____,
#        target_size=(image_size, image_size),
#        batch_size=____,
#        class_mode='categorical')#validation_generator = data_generator.flow_from_directory(
#        directory = ____,
#        target_size=(image_size, image_size),
#        class_mode='categorical')#my_new_model.fit_generator(
#        train_generator,
#        steps_per_epoch=____,
#        validation_data=____,
#        validation_steps=1)

您能从结果中判断出您的模型在验证数据中的正确时间吗?

在下一步中,我们将看看我们是否可以改进。

Keep Going

继续学习数据增强。 这是改进模型的一种巧妙而简单的方法。 然后,您将数据增强应用于此自动图像旋转问题。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/440272.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Angular相关的有价值的问题集锦

001. Angular的三大核心概念是什么&#xff1f; 答&#xff1a;组件化、模块化和路由&#xff08;Component、NgModule、Router&#xff09;,其中最核心的概念是组件化Component。 002. 前端为什么需要Router&#xff1f; 答&#xff1a;如果没有Router&#xff0c;浏览器的…

如何在Word中排版出漂亮规整的编程语言代码样式?【☆】

[1] 能输出各种编程语言并保持代码格式和语法高亮显示的网站&#xff1a; PlanetB | Syntax Highlight Code in Word Documents http://www.planetb.ca/syntax-highlight-word Welcome! — Pygments http://pygments.org/ [2] How do you display code snippets in MS Wor…

网络编程懒人入门(一):快速理解网络通信协议(上篇)

转自即时通讯网&#xff1a;http://www.52im.net/ 原作者&#xff1a;阮一峰(ruanyifeng.com&#xff09;&#xff0c;本文由即时通讯网重新整理发布&#xff0c;感谢原作者的无私分享。 1、写在前面 论坛和群里常会有技术同行打算自已开发IM或者消息推送系统&#xff0c;很…

PCA算法中样本方差和协方差的无偏估计与n-1的由来

原文出处&#xff1a; http://blog.sina.com.cn/s/blog_c96053d60101n24f.html 在PCA算法中的方差协方差计算公式中除数为什么是n-1? 假设X为独立同分布的一组随机变量&#xff0c;总体为M&#xff0c;随机抽取N个随机变量构成一个样本&#xff0c;和是总体的均值和方差, 是常…

【Gym - 101915D】Largest Group(二分图最大团,状压dp)

题干&#xff1a; 大黑山上有小小民和小小涛两种物种&#xff0c;山东人小李想要研究这两种物种的关系 奇怪的是大黑山上有相同数量的小小民和小小涛。小李数了数一共有 P 个&#xff0c;小李分别给P个小小民和小小涛编号 1 - P 号&#xff0c;已知每对小小民之间都是好朋友&…

Apollo自动驾驶入门课程第④讲 — 感知(上)

目录 1. 感知的概述 2. 计算机视觉 3. 摄像头图像 4. LiDAR图像 5. 机器学习 6. 神经网络 7. 反向滤波法 本文转自微信公众号&#xff1a;Apollo开发者社区 原创&#xff1a; 阿波君 Apollo开发者社区 8月23日 上一篇文章中&#xff0c;我们发布了无人驾驶技术的 定位篇…

三种经典的洗牌算法

参考原文链接&#xff1a;https://blog.csdn.net/qq_25026989/article/details/89512769 问题描述&#xff1a;洗牌算法是将原来的数组进行打散&#xff0c;使原数组的某个数在打散后的数组中的每个位置上等概率的出现。 主要有3中经典的洗牌算法&#xff1a; 1.抽牌&#x…

【数据库实验课堂】实验一:数据库的管理

实验一&#xff1a;数据库的管理 1、假设SQL Server服务已启动&#xff0c;并以Administrator身份登录计算机&#xff08;文件名称自定&#xff09;&#xff1b;请分别使用Management界面方式和T-SQL语句实现以下操作&#xff1a; 1) 要求在本地磁盘D创建一个学生-课程数据库…

网络编程懒人入门(二):快速理解网络通信协议(下篇)

转自即时通讯网&#xff1a;http://www.52im.net/ 原作者&#xff1a;阮一峰(ruanyifeng.com&#xff09;&#xff0c;本文由即时通讯网重新整理发布&#xff0c;感谢原作者的无私分享。 1、前言 本文上篇《网络编程懒人入门(一)&#xff1a;快速理解网络通信协议&#xff0…

为什么说逻辑回归LR是线性分类器?

问题描述&#xff1a;为什么说逻辑回归LR是非常典型的线性分类器&#xff1f; 首先&#xff0c;我们要弄明白区分线性与非线性分类器的标准是什么&#xff1f;是决策边界&#xff08;Decision Boundary&#xff09; 以二分类&#xff08;LR可以用于多分类&#xff09;为例进行…

【数据库实验课堂】实验二 使用SQL Server管理数据表

实验二 使用SQL Server管理数据表&#xff1a; 1、请在指定数据库内完成以下内容&#xff1a; 1) 依据数据表的结构创建相对应的数据表&#xff0c;表结构如下所示&#xff1b; **学生信息表&#xff08;student&#xff09;**字段名称 字段类型及长度 说明 备注 S…

5, Data Augmentation

Intro 这是深度学习第5课 在本课程结束时&#xff0c;您将能够使用数据增强。 这个技巧让你看起来拥有的数据远远超过实际拥有的数据&#xff0c;从而产生更好的模型。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(ypt_BAotCLo, width800, height45…

朴素贝叶斯算法注意事项(有待完善)

1.朴素贝叶斯算法的优缺点总结&#xff1a; 优点&#xff1a; 朴素贝叶斯模型发源于古典数学理论&#xff0c;有稳定的分类效率&#xff1b;分类速度快&#xff0c;准确度高&#xff1b;对缺失数据不太敏感&#xff0c;算法简单&#xff0c;常用于文本分类&#xff08;如新闻…

网络编程懒人入门(三):快速理解TCP协议一篇就够

转自即时通讯网&#xff1a;http://www.52im.net/ 原作者&#xff1a;阮一峰(ruanyifeng.com&#xff09;&#xff0c;本文由即时通讯网重新整理发布&#xff0c;感谢原作者的无私分享。 1、前言 本系列文章的前两篇《网络编程懒人入门(一)&#xff1a;快速理解网络通信协议…

【数据库实验课堂】实验三:管理SQL Server表数据

以课本指定的数据库为例&#xff0c;并依据数据表的结构创建相对应的数据表&#xff08;student、course、sc&#xff09;&#xff0c;请分别使用Management Stuio界面方式及T-SQL 语句实现进行以下操作&#xff1a; 向各个数据表中插入如下记录&#xff1a; 学生信息表&#…

分类问题的模型评估指标总结

在分类任务下&#xff0c;预测结果(Predicted Condition)与正确标记(True Condition)之间存在四中不同的组合&#xff0c;构成混淆矩阵(可适用于多分类)&#xff0c;通常有这几种主要模型评估指标&#xff1a;精确率(查的准)、召回率(查的全对正样本的区分能力)、F1值(反映模型…

6. A Deeper Understanding of Deep Learning

Intro 这是深度学习第6课。 在本课程结束时&#xff0c;您将了解随机梯度下降和反向传播如何用在深度学习模型中设置权重。 这些主题很复杂&#xff0c;但许多专家认为它们是深度学习中最重要的思想。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(…

JetBrains - IDEA 常用快捷键汇总

【常规】 CtrlShift Enter&#xff0c;语句完成“&#xff01;”&#xff0c;否定完成&#xff0c;输入表达式时按 “&#xff01;”键CtrlE&#xff0c;最近的文件CtrlShiftE&#xff0c;最近更改的文件ShiftClick&#xff0c;可以关闭文件Ctrl[ OR ]&#xff0c;可以跑到大…

nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法

nltk是NLP领域中一个比较通用的国际分词工具&#xff0c;但是使用时往往依赖语料库数据包&#xff0c;需要安装到本地&#xff0c;以下介绍在线安装和离线安装两种方式&#xff1a; &#xff08;ps&#xff1a;对NLP感兴趣的朋友可以相互学习&#xff0c;我的微信号&#xff1…

7. Deep Learning From Scratch

Intro 这是深度学习第7课。 到目前为止&#xff0c;您构建的模型依赖于预先训练的模型。 但它们不是许多用例的理想解决方案。 在本课程中&#xff0c;您将学习如何构建全新的模型。 Lesson [1] from IPython.display import YouTubeVideo YouTubeVideo(YbNE3zhtsoo, widt…