前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Keras篇】---利用keras改写VGG16经典模型在手写数字识别体中的应用

【Keras篇】---利用keras改写VGG16经典模型在手写数字识别体中的应用

作者头像
LhWorld哥陪你聊算法
发布于 2018-09-13 06:57:51
发布于 2018-09-13 06:57:51
2.2K00
代码可运行
举报
运行总次数:0
代码可运行

一、前述

VGG16是由16层神经网络构成的经典模型,包括多层卷积,多层全连接层,一般我们改写的时候卷积层基本不动,全连接层从后面几层依次向前改写,因为先改参数较小的。

二、具体

1、因为本文中代码需要依赖OpenCV,所以第一步先安装OpenCV

因为VGG要求输入244*244,而数据集是28*28的,所以需要通过OpenCV在代码里去改变。

2、把模型下载后离线放入用户的管理目录下面,这样训练的时候就不需要从网上再下载了

3、我们保留的是除了全连接的所有层。

4、选择数据生成器,在真正使用的时候才会生成数据,加载到内存,前面yield只是做了一个标记

 代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用迁移学习的思想,以VGG16作为模板搭建模型,训练识别手写字体
# 引入VGG16模块
from keras.applications.vgg16 import VGG16

# 其次加载其他模块
from keras.layers import Input
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
from keras.models import Model
from keras.optimizers import SGD

# 加载字体库作为训练样本
from keras.datasets import mnist

# 加载OpenCV(在命令行中窗口中输入pip install opencv-python),这里为了后期对图像的处理,
# 大家使用pip install C:\Users\28542\Downloads\opencv_python-3.4.1+contrib-cp35-cp35m-win_amd64.whl
# 比如尺寸变化和Channel变化。这些变化是为了使图像满足VGG16所需要的输入格式
import cv2
import h5py as h5py
import numpy as np

# 建立一个模型,其类型是Keras的Model类对象,我们构建的模型会将VGG16顶层(全连接层)去掉,只保留其余的网络
# 结构。这里用include_top = False表明我们迁移除顶层以外的其余网络结构到自己的模型中
# VGG模型对于输入图像数据要求高宽至少为48个像素点,由于硬件配置限制,我们选用48个像素点而不是原来
# VGG16所采用的224个像素点。即使这样仍然需要24GB以上的内存,或者使用数据生成器
model_vgg = VGG16(include_top=False, weights='imagenet', input_shape=(48, 48, 3))#输入进来的数据是48*48 3通道
#选择imagnet,会选择当年大赛的初始参数
#include_top=False 去掉最后3层的全连接层看源码可知
for layer in model_vgg.layers:
    layer.trainable = False#别去调整之前的卷积层的参数
model = Flatten(name='flatten')(model_vgg.output)#去掉全连接层,前面都是卷积层
model = Dense(4096, activation='relu', name='fc1')(model)
model = Dense(4096, activation='relu', name='fc2')(model)
model = Dropout(0.5)(model)
model = Dense(10, activation='softmax')(model)#model就是最后的y
model_vgg_mnist = Model(inputs=model_vgg.input, outputs=model, name='vgg16')
#把model_vgg.input  X传进来
#把model Y传进来 就可以训练模型了

# 打印模型结构,包括所需要的参数
model_vgg_mnist.summary()


#以下是原版的模型结构 224*224
model_vgg = VGG16(include_top=False, weights='imagenet', input_shape=(224, 224, 3))
for layer in model_vgg.layers:
    layer.trainable = False#别去调整之前的卷积层的参数
model = Flatten()(model_vgg.output)
model = Dense(4096, activation='relu', name='fc1')(model)
model = Dense(4096, activation='relu', name='fc2')(model)
model = Dropout(0.5)(model)
model = Dense(10, activation='softmax', name='prediction')(model)
model_vgg_mnist_pretrain = Model(model_vgg.input, model, name='vgg16_pretrain')

model_vgg_mnist_pretrain.summary()

# 新的模型不需要训练原有卷积结构里面的1471万个参数,但是注意参数还是来自于最后输出层前的两个
# 全连接层,一共有1.2亿个参数需要训练
sgd = SGD(lr=0.05, decay=1e-5)#lr 学习率 decay 梯度的逐渐减小 每迭代一次梯度就下降 0.05*1-10-5))这样来变
#随着越来越下降 学习率越来越小 步子越小
model_vgg_mnist.compile(loss='categorical_crossentropy',
                                 optimizer=sgd, metrics=['accuracy'])

# 因为VGG16对网络输入层需要接受3通道的数据的要求,我们用OpenCV把图像从32*32变成224*224,把黑白图像转成RGB图像
# 并把训练数据转化成张量形式,供keras输入
(X_train, y_train), (X_test, y_test) = mnist.load_data("../test_data_home")
X_train, y_train = X_train[:1000], y_train[:1000]#训练集1000条
X_test, y_test = X_test[:100], y_test[:100]#测试集100条
X_train = [cv2.cvtColor(cv2.resize(i, (48, 48)), cv2.COLOR_GRAY2RGB)
           for i in X_train]#变成彩色的
#np.concatenate拼接到一起把
X_train = np.concatenate([arr[np.newaxis] for arr in X_train]).astype('float32')

X_test = [cv2.cvtColor(cv2.resize(i, (48, 48)), cv2.COLOR_GRAY2RGB)
          for i in X_test]
X_test = np.concatenate([arr[np.newaxis] for arr in X_test]).astype('float32')

print(X_train.shape)
print(X_test.shape)

X_train = X_train / 255
X_test = X_test / 255


def tran_y(y):
    y_ohe = np.zeros(10)
    y_ohe[y] = 1
    return y_ohe


y_train_ohe = np.array([tran_y(y_train[i]) for i in range(len(y_train))])
y_test_ohe = np.array([tran_y(y_test[i]) for i in range(len(y_test))])

model_vgg_mnist.fit(X_train, y_train_ohe, validation_data=(X_test, y_test_ohe),
                             epochs=100, batch_size=50)

 结果:

 自定义的网络层:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-03-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
诺贝尔物理学奖得主Arthur Ashkin去世,他发明了“激光镊子”,曾抱怨被诺奖遗忘
9月21日,2018年诺贝尔物理学奖得主,Arthur Ashkin在美国新泽西的家中去世,终年98岁。
量子位
2020/10/26
6150
诺贝尔物理学奖得主Arthur Ashkin去世,他发明了“激光镊子”,曾抱怨被诺奖遗忘
六万字 HTTP 必备知识学习,程序员不懂网络怎么行,一篇HTTP入门 不收藏都可惜
作为一名程序员,可能多数人都偏向于后端敲代码,但是关于Web的知识可千万不能忘呀!
呆呆敲代码的小Y
2022/05/10
8910
六万字 HTTP 必备知识学习,程序员不懂网络怎么行,一篇HTTP入门 不收藏都可惜
隐秘历史:那场国产金融技术的“核武器试爆”
浅友们大家好~我是史中,我的日常生活是开撩五湖四海的科技大牛,我会尝试各种姿势,把他们的无边脑洞和温情故事讲给你听。如果你特别想听到谁的故事,不妨加微信(微信号:shizhongmax)告诉我。
浅黑科技
2020/06/16
7450
隐秘历史:那场国产金融技术的“核武器试爆”
战争中的 AI :乌克兰用人脸识别「摸底」俄罗斯士兵,但这只是小儿科
愿科技向善,愿世界和平。 作者 | 西西 编辑 | 陈彩娴 现代人对时间的概念是模糊的。若不细想,绝大多数人也许无法立刻想到:自2月24日普京向乌克兰宣战以来,俄乌战争已经进行了二十多天。 在这二十多天里,国际媒体的聚光灯照在这两片离大多数人都十分遥远的土地上。如鲁迅所说,「人类的悲欢离合并不相通。」当我们在阅读这些新闻时,往往难以深切地共情,尤其目前国内的疫情防控正值严峻当头。 然而,时代的雪花终究落在每一个人的肩膀上。当世界成为一个整体,当领域与领域的联系愈加紧密,政治从来便已不仅是政治,科研也从来便不
AI科技评论
2022/03/16
1K0
5 分钟读透 HTTP 的前世今生( Chrome、Firefox 和 Cloudflare 均已支持 HTTP/3 )
HTTP (Hypertext transfer protocol) 翻译成中文是超文本传输协议,是互联网上重要的一个协议。由欧洲核子研究委员会 CERN 的英国工程师 Tim Berners-Lee v 发明的,同时他也是 WWW 的发明人,最初的主要是用于传递通过 HTML 封装过的数据。
iMike
2019/10/10
7400
5 分钟读透 HTTP 的前世今生( Chrome、Firefox 和 Cloudflare 均已支持 HTTP/3 )
读懂AI民族主义:机器学习技术如何影响国际关系?
原作 Ian Hogarth 翻译 李杉 量子位 出品 | 公众号 QbitAI 机器学习一路快速发展,会改变的不仅是技术本身,国家之间的政治关系也会因它而产生改变。 △ Ian Hogarth 英国天使投资人Ian Hogarth和人工智能领域的科学家、投资人、政治家、政策制定者进行了历时9个月的探讨,提出了一个观点:机器学习的持续快速发展,将推动一种新型地缘政治的出现;AI民族主义。 他分析了人工智能近年的发展和各国人工智能政策的制定,指出:机器学习成为各国之间的巨大差异因素,
量子位
2018/07/19
6760
Stuart Rusell 专访:斯坦福百年报告否定人类水平 AI,不可理喻
【新智元导读】 UC Berkeley 大学计算机科学系教授,人工智能著名教材《Artificial Intelligence: A Modern Approach 》第一作者日前接受了Edge的专访。目前全世界有1300多所学校,包括一些知名大学,都在使用他的书作为人工智能标准教材。这位人工智能界赫赫有名的大师分享了他对人工智能的独特观点。他认为,大多数人对智能的定义都是不清晰的。结合自己多年来的研究心得,他在访谈中尝试对“智能”一词进行定义:有限最优性(bounded optimality)。他认为:我
新智元
2018/03/27
7940
Stuart Rusell 专访:斯坦福百年报告否定人类水平 AI,不可理喻
牛津大学人类未来研究所:万字长文谈AI新职场方向-政策研究
大数据文摘作品 编译:Happen、Chloe、田奥、糖竹子、及子龙、林海、Aileen 最近两年,虽然AI这个词语充斥在人类的媒体和生活中,但实际上AI技术的发展才刚刚起步,目前AI能做的事情还非常初级。黑暗森林法则里的“技术大爆炸”不知道何时会突然到来,各种法律、伦理和人性都会受到前所未有的挑战。本文的团队认为未雨绸缪,在那个时代到来之前做好准备,现在开始制定最完善"AI政策 ” 也许是对世界最有贡献的事情之一。 这是一篇来自牛津大学人类未来研究所的万字长文,由专注于研究AI政策的 Miles Brun
大数据文摘
2018/05/24
7040
前端科普系列(1):前端简史
回答这个问题之前,我想起了一道非常经典的前端面试题:“从输入URL到页面呈现在你面前到底发生了什么?”这个题目可以回答的很简单,但仔细思考,也可以回答的很深,这个过程涉及的东西很多。先看一张图:
2020labs小助手
2020/03/02
9850
Web技术的发展 网络发展简介(三)
通信协议是通信的理论基石,计算机、操作系统以及各种网络设备对通信的支持是计算机网络通信的物质基础
noteless
2019/02/25
1.4K0
Web技术的发展  网络发展简介(三)
【Hello CSS】序章-起源
在1982年的时候,万维网的发明者Tim Berners-Lee爵士为了让全世界的物理学家能够方便的进行合作与信息共享,造了HTML(HyperText Markup Language) 超文本置标语言。
陈大鱼头
2020/04/16
4790
【Hello CSS】序章-起源
密苏里大学最年轻系主任许东:从90年代泡沫繁荣,到深度学习复兴
命运攸关的时刻充满戏剧性,在个人的一生及历史的进程中都是难得出现的;这种时刻可能集中在某一天、某一时,甚至常常发生在某一分钟,但它们的决定性影响超越时间。对于许东来说,这一分钟,可能在志愿填报单上、在出国的飞机上、在1995年的那一场会议上。 作者 | 吴彤 编辑 | 李雨晨 许东在密苏里大学哥伦比亚分校生活了二十年。 2003年,38岁的许东来到该校计算机科学系,开始了他第一份教职。这也是他近二十年来唯一一份教职。许东在这所学校安了家,做起科研,2007年成为了该校最年轻的系主任。 这所学校坐落在美国密苏
AI科技评论
2022/09/14
1.3K0
密苏里大学最年轻系主任许东:从90年代泡沫繁荣,到深度学习复兴
传奇数学家斯梅尔
源 / 《数学文化》 当代富有色彩的著名数学家,首推长期工作在美国加州伯克利大学的史蒂芬 • 斯梅尔(Stephen Smale)教授。国内一般学术刊物介绍科学家时,谨守学术成就,避忌色彩。然而,就斯梅尔而言,他的学术成就和他的生活色彩,实互为补充,相辅相成。笔者喜欢读斯梅尔的文章,并与他有过互访的交往,愿借《数学文化》之一角,将所知所闻介绍给读者。本文从他在数学方面的工作谈起,最后补充若干生平故事。 斯梅尔教授属于当今世界上最杰出的数学科学家之列,在微分拓扑、动力系统、混沌理论、大范围变分学、计算复杂
顶级程序员
2018/04/27
1.1K0
传奇数学家斯梅尔
互联网信息分发简明史
在我看来,这个世界是由三个要素构成的,也即是:物质、能量、信息。那么什么是信息呢?
PP鲁
2020/02/17
4190
互联网信息分发简明史
图解 HTTP 的前世今生!
Http超文本传输协议同空气一般,感触不到它的存在但是又无处不在,笔者从维基百科摘录了一些Http协议的发展历程的简单信息,一起来看下吧:
范蠡
2020/11/13
8530
图解 HTTP 的前世今生!
文因互联鲍捷:深度解析知识图谱发展关键阶段及技术脉络 | 公开课笔记
知识图谱是人工智能三大分支之一——符号主义——在新时期主要的落地技术方式。该技术虽然在 2012 年才得名,但它的历史渊源,却可以追溯到更早的语义网、描述逻辑、和专家系统。在该技术的的历史演变中,多次出现发展瓶颈,也多次以工程的方式突破了这些瓶颈。
AI科技大本营
2018/09/28
9680
文因互联鲍捷:深度解析知识图谱发展关键阶段及技术脉络 | 公开课笔记
上帝会掷骰子吗?量子物理史话
这本书从开始到读完,整整经历了半年时间,虽然作者表示具备小学数学和初中物理基础的孩子都可以阅读,但将大学物理差不多还给老师的我表示,没有复习大学物理,很多看得不太明白,阅读难度系数比较大!但对量子科技的好奇心驱使我坚持读完整本书,而且对科学家孜孜不倦的科学探索和生活化描写,使得科技进步不是冷冰冰的公式符号,不是深奥复杂的大学教材,而是有血有肉、波澜壮阔的人类进步奋斗史,是对美丽而又神秘的宇宙万物的大探险。最后的读书笔记编写更是让我理清了脉络,虽然这也非常的伤脑筋,以至于只摘录完前世篇,而今生篇待以后理解更深入了再完成。
张国平
2020/09/27
1.7K0
终、《图解HTTP》读书笔记 - 汇总篇(总结)
又一本网络基础的书啃完了,这本书建议结合[[《网络是怎么样连接的》读书笔记 - 汇总篇]]这一篇读书笔记食用(当然也可以直接看原书)。
阿东
2022/12/06
6590
终、《图解HTTP》读书笔记 - 汇总篇(总结)
1955-2019:从钱学森之问到AI突围
导语:大国超级工程的背后,都有大规模的人才战略推动,人才战略带来技术突破,技术突破再形成一个行业的黄金时代。
AI科技大本营
2019/05/07
1.5K0
1955-2019:从钱学森之问到AI突围
技术简史
《技术简史》原著Ruling the wave, From the Compass to the Internet, a History of Business and Politics along the Technological Frontier)。依书中的视角,从15世纪的地理大发现到21世纪的网络音乐,每一次技术的创新和商业发展都大致遵循4个阶段的规律:
lambeta
2018/08/17
8620
技术简史
推荐阅读
相关推荐
诺贝尔物理学奖得主Arthur Ashkin去世,他发明了“激光镊子”,曾抱怨被诺奖遗忘
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验