keras 模型参数,模型保存,中间结果输出操作


Posted in Python onJuly 06, 2020

我就废话不多说了,大家还是直接看代码吧~

'''
Created on 2018-4-16
'''
import keras
from keras.models import Sequential
from keras.layers import Dense
from keras.models import Model
from keras.callbacks import ModelCheckpoint,Callback
import numpy as np
import tflearn
import tflearn.datasets.mnist as mnist

x_train, y_train, x_test, y_test = mnist.load_data(one_hot=True)
x_valid = x_test[:5000]
y_valid = y_test[:5000]
x_test = x_test[5000:]
y_test = y_test[5000:]
print(x_valid.shape)
print(x_test.shape)

model = Sequential()
model.add(Dense(units=64, activation='relu', input_dim=784))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',
       optimizer='sgd',
       metrics=['accuracy'])
filepath = 'D:\\machineTest\\model-ep{epoch:03d}-loss{loss:.3f}-val_loss{val_loss:.3f}.h5'
# filepath = 'D:\\machineTest\\model-ep{epoch:03d}-loss{loss:.3f}.h5'
checkpoint = ModelCheckpoint(filepath, monitor='val_loss', verbose=1, save_best_only=True, mode='min')
print(model.get_config())
# [{'class_name': 'Dense', 'config': {'bias_regularizer': None, 'use_bias': True, 'kernel_regularizer': None, 'batch_input_shape': (None, 784), 'trainable': True, 'kernel_constraint': None, 'bias_constraint': None, 'kernel_initializer': {'class_name': 'VarianceScaling', 'config': {'scale': 1.0, 'distribution': 'uniform', 'mode': 'fan_avg', 'seed': None}}, 'activity_regularizer': None, 'units': 64, 'dtype': 'float32', 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'activation': 'relu', 'name': 'dense_1'}}, {'class_name': 'Dense', 'config': {'bias_regularizer': None, 'use_bias': True, 'kernel_regularizer': None, 'bias_initializer': {'class_name': 'Zeros', 'config': {}}, 'kernel_constraint': None, 'bias_constraint': None, 'kernel_initializer': {'class_name': 'VarianceScaling', 'config': {'scale': 1.0, 'distribution': 'uniform', 'mode': 'fan_avg', 'seed': None}}, 'activity_regularizer': None, 'trainable': True, 'units': 10, 'activation': 'softmax', 'name': 'dense_2'}}]
# model.fit(x_train, y_train, epochs=1, batch_size=128, callbacks=[checkpoint],validation_data=(x_valid, y_valid))
model.fit(x_train, y_train, epochs=1,validation_data=(x_valid, y_valid),steps_per_epoch=10,validation_steps=1)
# score = model.evaluate(x_test, y_test, batch_size=128)
# print(score)
# #获取模型结构状况
# model.summary()
# _________________________________________________________________
# Layer (type)         Output Shape       Param #  
# =================================================================
# dense_1 (Dense)       (None, 64)        50240(784*64+64(b))   
# _________________________________________________________________
# dense_2 (Dense)       (None, 10)        650(64*10 + 10 )    
# =================================================================
# #根据下标和名称返回层对象
# layer = model.get_layer(index = 0)
# 获取模型权重,设置权重model.set_weights()
weights = np.array(model.get_weights())
print(weights.shape)
# (4,)权重由4部分组成
print(weights[0].shape)
# (784, 64)dense_1 w1
print(weights[1].shape)
# (64,)dense_1 b1
print(weights[2].shape)
# (64, 10)dense_2 w2
print(weights[3].shape)
# (10,)dense_2 b2

# # 保存权重和加载权重
# model.save_weights("D:\\xxx\\weights.h5")
# model.load_weights("D:\\xxx\\weights.h5", by_name=False)#by_name=True,可以根据名字匹配和层载入权重

# 查看中间结果,必须要先声明个函数式模型
dense1_layer_model = Model(inputs=model.input,outputs=model.get_layer('dense_1').output)
out = dense1_layer_model.predict(x_test)
print(out.shape)
# (5000, 64)

# 如果是函数式模型,则可以直接输出
# import keras
# from keras.models import Model
# from keras.callbacks import ModelCheckpoint,Callback
# import numpy as np
# from keras.layers import Input,Conv2D,MaxPooling2D
# import cv2
# 
# image = cv2.imread("D:\\machineTest\\falali.jpg")
# print(image.shape)
# cv2.imshow("1",image)
# 
# # 第一层conv
# image = image.reshape([-1, 386, 580, 3])
# img_input = Input(shape=(386, 580, 3))
# x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv1')(img_input)
# x = Conv2D(64, (3, 3), activation='relu', padding='same', name='block1_conv2')(x)
# x = MaxPooling2D((2, 2), strides=(2, 2), name='block1_pool')(x)
# model = Model(inputs=img_input, outputs=x)
# out = model.predict(image)
# print(out.shape)
# out = out.reshape(193, 290,64)
# image_conv1 = out[:,:,1].reshape(193, 290)
# image_conv2 = out[:,:,20].reshape(193, 290)
# image_conv3 = out[:,:,40].reshape(193, 290)
# image_conv4 = out[:,:,60].reshape(193, 290)
# cv2.imshow("conv1",image_conv1)
# cv2.imshow("conv2",image_conv2)
# cv2.imshow("conv3",image_conv3)
# cv2.imshow("conv4",image_conv4)
# cv2.waitKey(0)

中间结果输出可以查看conv过之后的图像:

原始图像:

keras 模型参数,模型保存,中间结果输出操作

经过一层conv以后,输出其中4张图片:

keras 模型参数,模型保存,中间结果输出操作

keras 模型参数,模型保存,中间结果输出操作

keras 模型参数,模型保存,中间结果输出操作

keras 模型参数,模型保存,中间结果输出操作

以上这篇keras 模型参数,模型保存,中间结果输出操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python计算牛顿迭代多项式实例分析
May 07 Python
python3+PyQt5实现自定义流体混合窗口部件
Apr 24 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
Python对CSV、Excel、txt、dat文件的处理
Sep 18 Python
django之自定义软删除Model的方法
Aug 14 Python
解决django xadmin主题不显示和只显示bootstrap2的问题
Mar 30 Python
Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解
Mar 30 Python
读取nii或nii.gz文件中的信息即输出图像操作
Jul 01 Python
Python使用itcaht库实现微信自动收发消息功能
Jul 13 Python
Python压缩模块zipfile实现原理及用法解析
Aug 14 Python
python 如何对logging日志封装
Dec 02 Python
pip install命令安装扩展库整理
Mar 02 Python
Python自省及反射原理实例详解
Jul 06 #Python
如何通过命令行进入python
Jul 06 #Python
解决TensorFlow调用Keras库函数存在的问题
Jul 06 #Python
python else语句在循环中的运用详解
Jul 06 #Python
Keras模型转成tensorflow的.pb操作
Jul 06 #Python
python如何进入交互模式
Jul 06 #Python
python3.4中清屏的处理方法
Jul 06 #Python
You might like
Thinkphp无限级分类代码
2015/11/11 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
Ajax+Jpgraph实现的动态折线图功能示例
2019/02/11 PHP
PHP实现数据四舍五入的方法小结【4种方法】
2019/03/27 PHP
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
javascript 面向对象编程基础:继承
2009/08/21 Javascript
jQuery代码优化 事件委托篇
2011/11/01 Javascript
JavaScript window.location对象
2014/11/14 Javascript
EasyUI Combobox设置默认值 获取text的方法
2016/11/28 Javascript
各种选择框jQuery的选中方法(实例讲解)
2017/06/27 jQuery
JS+HTML5 FileReader实现文件上传前本地预览功能
2020/03/27 Javascript
Angular.JS读取数据库数据调用完整实例
2019/07/02 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
使用Python编写爬虫的基本模块及框架使用指南
2016/01/20 Python
Python之os操作方法(详解)
2017/06/15 Python
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
Python3编码问题 Unicode utf-8 bytes互转方法
2018/10/26 Python
Python Web框架之Django框架文件上传功能详解
2019/08/16 Python
详解用Python为直方图绘制拟合曲线的两种方法
2019/08/21 Python
如何基于Python实现电子邮件的发送
2019/12/16 Python
python飞机大战pygame游戏之敌机出场实现方法详解
2019/12/17 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Pycharm 2020.1 版配置优化的详细教程
2020/08/07 Python
OpenCV灰度化之后图片为绿色的解决
2020/12/01 Python
python 实现有道翻译功能
2021/02/26 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
从当地商店送来的杂货:Instacart
2018/08/19 全球购物
碧欧泉法国官网:Biotherm法国
2019/10/23 全球购物
秦兵马俑教学反思
2014/02/07 职场文书
上班玩手机检讨书
2014/02/17 职场文书
《一个小村庄的故事》教学反思
2014/04/13 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
文员求职信
2014/07/15 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书