every blog every motto:

0. 前言

10 monkeys 模型微调

1. 代码部分

1. 导入模块

%matplotlib inline
import matplotlib as mpl
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import sklearn
import os,sys
import tensorflow as tf
import time
from tensorflow import kerasprint(tf.__version__)
print(sys.version_info)
for module in mpl,pd,sklearn,tf,keras:print(module.__name__,module.__version__)

2. 文件读取

# 文件路径
train_dir = '../input/10-monkey-species/training/training'
valid_dir = "../input/10-monkey-species/validation/validation"
label_file = '../input/10-monkey-species/monkey_labels.txt'
print(os.path.exists(train_dir))
print(os.path.exists(valid_dir))
print(os.path.exists(label_file))
print(os.listdir(train_dir))
print(os.listdir(valid_dir))
# 读取数据
labels = pd.read_csv(label_file,header=0)
print(labels)
# 读取图片
height = 224
width = 224
channels = 3
batch_size = 24
num_classes = 10train_datagen = keras.preprocessing.image.ImageDataGenerator(preprocessing_function=keras.applications.resnet50.preprocess_input, # 归一化rotation_range=40,width_shift_range=0.2,height_shift_range = 0.2,shear_range=0.2,zoom_range=0.2,horizontal_flip = True,fill_mode = 'nearest',
)
train_generator = train_datagen.flow_from_directory(train_dir,target_size=(height,width),batch_size=batch_size,seed=7,shuffle=True,class_mode="categorical")valid_datagen = keras.preprocessing.image.ImageDataGenerator(    preprocessing_function=keras.applications.resnet50.preprocess_input)
valid_generator = valid_datagen.flow_from_directory(valid_dir,target_size=(height,width),batch_size=batch_size,seed=7,shuffle=False,class_mode="categorical")train_num = train_generator.samples
valid_num = valid_generator.samples
print(train_num,valid_num)
# 读取数据
for i in range(2):x,y = train_generator.next()print(x.shape,y.shape)print(y)

3. 构建模型

resnet50_fine_tune = keras.models.Sequential()
resnet50_fine_tune.add(keras.applications.ResNet50(include_top=False,pooling='avg',weights='imagenet'))
resnet50_fine_tune.add(keras.layers.Dense(num_classes,activation='softmax'))
resnet50_fine_tune.layers[0].trainable=Falseresnet50_fine_tune.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
resnet50_fine_tune.summary()

4. 训练

epochs = 10
history = resnet50_fine_tune.fit_generator(train_generator,steps_per_epoch = train_num // batch_size,epochs=epochs,validation_data = valid_generator,validation_steps=valid_num // batch_size)
print(history.history.keys())

5. 学习曲线

# 学习曲线
def plot_learning_curves(hsitory,label,epochs,min_value,max_value):data = {}data[label] = history.history[label]data['val_' + label] = hsitory.history['val_' + label]pd.DataFrame(data).plot(figsize=(8,5))plt.grid(True)plt.axis([0,epochs,min_value,max_value])plt.show()plot_learning_curves(history,'accuracy',epochs,0,1)
plot_learning_curves(history,'loss',epochs,0,2)

6. 另一种方法

训练后几层

# 另一种方法
resnet50 = keras.applications.ResNet50(include_top=False,pooling='avg',weights='imagenet')
resnet50.summary()

6.2 模型搭建

for layer in resnet50[0:-5]:layers.trainable = Falseresnet50_new = keras.models.Sequential([resnet50,keras.layers.Dense(num_classes,activation='softmax'),
])
resnet50_new.compile(loss='categorical_crossentropy',optimizer='sgd',metrics=['accuracy'])
resnet50_new.summary()

6.3 训练

epochs = 10
history = resnet50_new.fit_generator(train_generator,steps_per_epoch = train_num // batch_size,epochs=epochs,validation_data = valid_generator,validation_steps=valid_num // batch_size)

从零基础入门Tensorflow2.0 ----六、31 kaggle 10 monkeys模型微调相关推荐

  1. 视频编码零基础入门(0):零基础,史上最通俗视频编码技术入门

    [来源申明]本文引用了微信公众号"鲜枣课堂"的<视频编码零基础入门>文章内容.为了更好的内容呈现,即时通讯网在引用和收录时内容有改动,转载时请注明原文来源信息,尊重原作 ...

  2. 【天池赛事】零基础入门语义分割-地表建筑物识别 Task5:模型训练与验证

    [天池赛事]零基础入门语义分割-地表建筑物识别 Task1:赛题理解与 baseline(3 天) – 学习主题:理解赛题内容解题流程 – 学习内容:赛题理解.数据读取.比赛 baseline 构建 ...

  3. Python零基础入门习题(六)红楼梦人物出场次数统计

    前言 Python语言简单易用,可读性强.在了解基础语法后,你就可以来尝试解决以下的题目.放心,本系列的文章都对新手非常友好. 一.生日悖论 生日悖论是指在不少于 23 个人中至少有两人生日相同的概率 ...

  4. Apache Flink 零基础入门(十六)Flink DataStream transformation

    Operators transform one or more DataStreams into a new DataStream. Operators操作转换一个或多个DataStream到一个新的 ...

  5. 零基础入门学习Python(31)--永久存储:腌制一缸美味的泡菜

    知识点 pickle( 泡菜 ) 模块介绍: pickle模块作用是持久化的储存数据. 在Python程序运行中得到了一些字符串.列表.字典等数据,想要长久的保存下来,方便以后使用,而不是简单的放入内 ...

  6. 零基础入门--中文命名实体识别(BiLSTM+CRF模型,含代码)

    https://github.com/mali19064/LSTM-CRF-pytorch-faster 中文分词 说到命名实体抽取,先要了解一下基于字标注的中文分词. 比如一句话 "我爱北 ...

  7. SQL零基础入门学习(七)

    SQL零基础入门学习(六) SQL BETWEEN 操作符 BETWEEN 操作符选取介于两个值之间的数据范围内的值.这些值可以是数值.文本或者日期. SQL BETWEEN 语法 SELECT co ...

  8. Arduino UNO新手零基础入门学习教程博客汇总

    写在开头 最近在上Arduino的课,可以说Arduino对新手来说非常友好了,因为相比于51和32,Arduino的库函数下载就好,不需要自己去写,就很方便 我的硬件设备 这个是学校提供的硬件设备, ...

  9. 生日祝福小程序_广告配音剪映零基础入门教程第二十六篇:如何给朋友制作生日祝福视频...

    经常听到小伙伴问到生日祝福视频怎么做,当然我想既然要为他人做生日祝福视频,那么这个人必定是自己身边比较重要的人,而生日又是每个人都是非常重要的,在这种充满意义的时刻,我们想给自己极其重要的人送上一份祝 ...

  10. SQL零基础入门学习(十六)

    SQL零基础入门学习(十五) SQL函数 SQL MAX() 函数 MAX() 函数返回指定列的最大值. SQL MAX() 语法 SELECT MAX(column_name) FROM table ...

最新文章

  1. pyhton 画出音频文件的波形图和频谱图
  2. 一个切割PDF文件的简单的方法 -只需要chrome浏览器
  3. C++的this指针和引用符号的搭配使用理解
  4. Selenium for C#的入门Demo
  5. PL/SQL 按日期查询问题
  6. 苹果修复 Gatekeeper 绕过漏洞
  7. iphonex适配游戏_Galaxy Fold应用适配大测试,这些软件超有远见!
  8. Java Tomcat SSL 服务端/客户端双向认证
  9. linux查看内存参数
  10. cocopod升级1.6.0bate问题
  11. 电子技术基础(数字部分)(第六版) 康华光 课后习题答案
  12. 武汉工程大学matlab,Lorenz系统动力学行为的MATLAB仿真与分析[1]
  13. c语言编程实现红绿灯,C语言实现红绿灯.doc
  14. unity obi插件
  15. 用python计算100以内所有奇数的和_用python脚本来计算100以内奇数或者偶数之和
  16. sublime3:解决拼音不跟随问题+markdown插件
  17. 中旅投资计划战略入股开元森泊,成为其第二大股东
  18. 六年级计算机学情分析报告,六年级学生学情分析报告.doc
  19. 网络安全——防火墙配置实验
  20. 软件压缩卡与硬件压缩卡的比较

热门文章

  1. SpringCloud实战(一)基于nacos实现订单+视频服务的调用
  2. 每天一道剑指offer-栈的压入,弹出序列
  3. ipoo3可以用鸿蒙,vivo新机入网!支持44W快充 配置与iQOO Neo3类似
  4. 怎么在服务器跑sql文件,服务器mysql数据库如何运行脚本
  5. for命令linux,linux命令:for循环(示例代码)
  6. python操作之更新数据库中某个字段的数据
  7. linux 完成量源码,Linux内核中等待队列 和完成量
  8. java script应用领域_JavaScript的应用
  9. halcon例程讲解_halcon例程学习笔记(6)
  10. 改键走a显示攻击距离_英雄联盟谁才是真正的走A怪?大神钟爱VN,新手都去玩复仇之矛!...