本项目参考:

https://www.bilibili.com/video/av31500120?t=4657

训练代码

 # coding: utf-8
# Learning from Mofan and Mike G
# Recreated by Paprikatree
# Convolution NN Train import numpy as np
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Convolution2D, Activation, MaxPool2D, Flatten, Dense
from keras.optimizers import Adam
from keras.models import load_model nb_class = 10
nb_epoch = 4
batchsize = 128 '''
1st,准备参数
X_train: (0,255) --> (0,1) CNN中似乎没有必要?cnn自动转了吗?
设置时间函数测试一下两者对比。
小技巧:X_train /= 255.0 就可不用转换成浮点了???
'''
# Preparing your data mnist. MAC /.keras/datasets linux home ./keras/datasets
(X_train, Y_train), (X_test, Y_test) = mnist.load_data() # setup data shape
# (-1, 28, 28, 1) -1表示有默认个数据集,28*28是像素,1是1个通道
X_train = X_train.reshape(-1, 28, 28, 1) # tensorflow-channel last,while theano-channel first
X_test = X_test.reshape(-1, 28, 28, 1) X_train = X_train/255.000
X_test = X_test/255.000 # One-hot 6 --> [0,0,0,0,0,1,0,0,0]
Y_train = np_utils.to_categorical(Y_train, nb_class)
Y_test = np_utils.to_categorical(Y_test, nb_class) '''
2nd,设置模型
''' # setup model
model = Sequential() # 1st convolution layer # 滤波器要在28x28的图上横着走32次
model.add(Convolution2D(
filters=32, # 此处把filters写成了filter,找了半天。囧
kernel_size=[5, 5], # 滤波器是5x5大小的,可以是list列表,也可以是tuple元祖
padding='same', # padding也是一个窗口模式
input_shape=(28, 28, 1) # 定义输入的数据,必须是元组
))
model.add(Activation('relu'))
model.add(MaxPool2D(
pool_size=(2, 2), # 按照规则抓取特征,此处为在pool_size的2*2窗口下,strides = 2*2 跳两格再抓取。如 1 2 3 4 5 6...27 28 抓取1 2 ,跳过 3 4 抓取 5 6。
strides=(2, 2), # 相当于把图片缩小了。
padding="same",
)) # 2nd Conv2D layer
model.add(Convolution2D(
filters=64,
kernel_size=(5, 5),
padding='same',
))
model.add(Activation('relu'))
model.add(MaxPool2D(
pool_size=(2, 2), # 按照规则抓取特征,此处为在pool_size的2*2窗口下,strides = 2*2 跳两格再抓取。如 1 2 3 4 5 6...27 28 抓取1 2 ,跳过 3 4 抓取 5 6。
strides=(2, 2), # 相当于把图片缩小了。
padding="same",
)) # 讨论,卷积层数和最终结果关系。 # 1st Fully connected Dense,Dense 全连接层是hello world里面的内容
model.add(Flatten()) # 把卷积层里面的全部转换层一维数组
model.add(Dense(1024)) # Dense is output
model.add(Activation('relu')) # 1st Fully connected Dense,Dense 全连接层是hello world里面的内容
# 把卷积层里面的全部转换层一维数组
model.add(Dense(256)) # Dense is output
model.add(Activation('tanh')) # 2nd Fully connected Dense
model.add(Dense(10))
model.add(Activation('softmax')) '''
3rd 定义参数
'''
# Define Optimizer and setup Param
adam = Adam(lr=0.0001) # Adam实例化 # compile model
model.compile(
optimizer=adam, # optimizer='Adam'也是可以的,且默认lr=0.001,此处已经实例化为adam
loss='categorical_crossentropy',
metrics=['accuracy'],
) # Run network
model.fit(x=X_train, # 更多参数可以查看fit函数,alt+鼠标左键单击fit
y=Y_train,
epochs=nb_epoch,
batch_size=batchsize, # p=parameter, batch_size; v=var, batch size
verbose=1, # 显示模式
validation_data=(X_test, Y_test)
)
model.save('model_name.h5')
# evaluation = model.evaluate(X_test, Y_test) 现在用model.fit(validation_data)
# print(evaluation) 效果一样

测试代码:

 # coding: utf-8
# Learning from Mofan and Mike G
# Recreated by Paprikatree
# Convolution NN Predict import numpy as np
from keras.models import load_model # ??
import matplotlib.pyplot as plt
import matplotlib.image as processimage # load trained model
model = load_model('model_name.h5') # 已经训练好了的模型,在根目录下,默认为model_name.h5 # 写一个来预测的类
class MainPredictImg(object): def __init__(self):
pass def pred(self, filename):
pred_img = processimage.imread(filename)
pred_img = np.array(pred_img)
pred_img = pred_img.reshape(-1, 28, 28, 1)
prediction = model.predict(pred_img)
final_prediction = [result.argmax() for result in prediction][0]
a = 0
for i in prediction[0]:
print(a)
print('Percent:{:.30%}'.format(i))
a = a+1
return final_prediction def main():
predict = MainPredictImg()
res = predict.pred('4.png')
print("your number is:-->", res) if __name__ == '__main__':
main()

keras02 - hello convolution neural network 搭建第一个卷积神经网络的更多相关文章

  1. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1

    3.Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1 http://blog.csdn.net/sunbow0 ...

  2. Convolution Neural Network (CNN) 原理与实现

    本文结合Deep learning的一个应用,Convolution Neural Network 进行一些基本应用,参考Lecun的Document 0.1进行部分拓展,与结果展示(in pytho ...

  3. Deeplearning - Overview of Convolution Neural Network

    Finally pass all the Deeplearning.ai courses in March! I highly recommend it! If you already know th ...

  4. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.2

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.2 http://blog.csdn.net/sunbow0 ...

  5. Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.3

    3.Spark MLlib Deep Learning Convolution Neural Network(深度学习-卷积神经网络)3.3 http://blog.csdn.net/sunbow0 ...

  6. 深度学习:卷积神经网络(convolution neural network)

    (一)卷积神经网络 卷积神经网络最早是由Lecun在1998年提出的. 卷积神经网络通畅使用的三个基本概念为: 1.局部视觉域: 2.权值共享: 3.池化操作. 在卷积神经网络中,局部接受域表明输入图 ...

  7. Recurrent Neural Network系列1--RNN(循环神经网络)概述

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 本文翻译自 RECURRENT NEURAL NETWORKS T ...

  8. 【面向代码】学习 Deep Learning(三)Convolution Neural Network(CNN)

    ========================================================================================== 最近一直在看Dee ...

  9. TensorFlow从入门到理解(三):你的第一个卷积神经网络(CNN)

    运行代码: from __future__ import print_function import tensorflow as tf from tensorflow.examples.tutoria ...

随机推荐

  1. 万能的Python,还能用来制作高大上的进度条?

    对于开发或者运维来说,使用Python去完成一些跑批任务,或者做一些监控事件是非常正常的情况.那么如何有效的监控任务的进度,除了在任务中加上log外,还能不能有另一种方式来了解任务进展到哪一步了呢? ...

  2. 详细介绍Spring Boot 2.0的那些新特性与增强

    以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Java 6 和 7 不再支持. 内嵌容器包结构调整 为了支持reactive使用场景,内嵌的容器包结构被重构了 ...

  3. 宁撞金钟一下,不打破鼓三千,IT人要有志气,要进就进大的好的公司

    最近我也在帮一些朋友面试,再结合自身的经验,发现了一个意料之外情理之中的事情:个别挣钱能力一般或规模比较小的公司,对候选人的要求普遍比一些大公司反而高,而且工作时间普遍会比一些好公司要长. 比如一个税 ...

  4. Python爬虫入门教程 44-100 Charles的安装与使用-手机APP爬虫部分

    1. 第二款抓包工具Charles安装与使用 Charles和Fiddler一样,也是一款抓包工具,比Fiddler界面更加清晰,支持多平台 1.1 官方网址 https://www.charlesp ...

  5. jQuery获取或设置元素的宽度和高度

    jQuery获取或设置元素的宽度和高度: 可使用以下3种方法: 1,jQuery width() 和 height() 方法: 2,innerWidth() 和 innerHeight() 方法: 3 ...

  6. h5页面 video暂停播放 视频控件 以及当前页面只有一个可以播放效果

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...

  7. Spring注解AOP及单元测试junit(6)

    2019-03-10/20:19:56 演示:将xml配置方式改为注解方式 静态以及动态代理推荐博客:https://blog.csdn.net/javazejian/article/details/ ...

  8. 洛谷P2664 树上游戏(点分治)

    题意 题目链接 Sol 神仙题..Orz yyb 考虑点分治,那么每次我们只需要统计以当前点为\(LCA\)的点对之间的贡献以及\(LCA\)到所有点的贡献. 一个很神仙的思路是,对于任意两个点对的路 ...

  9. SpringMVC归纳-1(model数据模型与重定向传参技术)

    要点: model是一个Map结构的数据模型,能重定向时传递数据(拼接URL),但不安全,主要用于渲染前端页面,配合Thymeleaf填充html里面里设置好的参数. @RequestParam用来获 ...

  10. 测者的测试技术手册:Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

    今天遇见了一个奇怪的问题,在IDE中run unit test,全部cases都成功了,但是后来通过mvn test运行case确保错了.在寻求原因的同时也找到了对应的解决方法. Run Unit T ...