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元组操作实例解析
Sep 23 Python
python中lambda与def用法对比实例分析
Apr 30 Python
Python函数式编程指南(二):从函数开始
Jun 24 Python
python出现"IndentationError: unexpected indent"错误解决办法
Oct 15 Python
对python中执行DOS命令的3种方法总结
May 12 Python
python实现输入数字的连续加减方法
Jun 22 Python
使用python脚本实现查询火车票工具
Jul 19 Python
Python实现钉钉发送报警消息的方法
Feb 20 Python
Python利用lxml模块爬取豆瓣读书排行榜的方法与分析
Apr 15 Python
基于python实现对文件进行切分行
Apr 26 Python
tensorflow 动态获取 BatchSzie 的大小实例
Jun 30 Python
Python道路车道线检测的实现
Jun 27 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
php防止恶意刷新与刷票的方法
2014/11/21 PHP
thinkphp5.0自定义验证规则使用方法
2017/11/16 PHP
PHP简单实现二维数组的矩阵转置操作示例
2017/11/24 PHP
php微信公众号开发之秒杀
2018/10/20 PHP
Thinkphp整合阿里云OSS图片上传实例代码
2019/04/28 PHP
php设计模式之原型模式分析【星际争霸游戏案例】
2020/03/23 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
jquery 检测元素是否存在的实例代码
2013/11/19 Javascript
JavaScript中实现继承的三种方式和实例
2015/01/29 Javascript
jQuery实现按键盘方向键翻页特效
2015/03/18 Javascript
jQuery解决浏览器兼容性问题案例分析
2016/04/15 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
ajax +NodeJS 实现图片上传实例
2017/06/06 NodeJs
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
Vue在页面数据渲染完成之后的调用方法
2018/09/11 Javascript
jQuery使用$.extend(true,object1, object2);实现深拷贝对象的方法分析
2019/03/06 jQuery
微信小程序页面间传值与页面取值操作实例分析
2019/04/30 Javascript
layui: layer.open加载窗体时出现遮罩层的解决方法
2019/09/26 Javascript
js实现的订阅发布者模式简单示例
2020/03/14 Javascript
跟老齐学Python之让人欢喜让人忧的迭代
2014/10/02 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
对Python 网络设备巡检脚本的实例讲解
2018/04/22 Python
Python2和Python3中urllib库中urlencode的使用注意事项
2018/11/26 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
英国花园、DIY、电器和家居用品商店:Robert Dyas
2019/03/18 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
内业资料员岗位职责
2014/01/04 职场文书
会议邀请函范文
2014/01/09 职场文书
医院实习接收函
2014/01/12 职场文书
《掌声》教学反思
2014/02/23 职场文书
小学生优秀评语大全
2014/04/22 职场文书
四年级作文之说明文作文
2019/10/14 职场文书
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
利用Pycharm连接服务器的全过程记录
2021/07/01 Python
Django中session进行权限管理的使用
2021/07/09 Python