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操作列表的常用方法分享
Feb 13 Python
python进阶教程之动态类型详解
Aug 30 Python
Python中处理字符串之endswith()方法的使用简介
May 18 Python
对pandas的dataframe绘图并保存的实现方法
Aug 05 Python
python购物车程序简单代码
Apr 18 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
Python如何批量获取文件夹的大小并保存
Mar 31 Python
解决python图像处理图像赋值后变为白色的问题
Jun 04 Python
如何用python处理excel表格
Jun 09 Python
python文件读取失败怎么处理
Jun 23 Python
Python爬虫如何破解JS加密的Cookie
Nov 19 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 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/06/09 PHP
YII中assets的使用示例
2014/07/31 PHP
PHP将字符分解为多个字符串的方法
2014/11/22 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
使用jQuery向asp.net Mvc传递复杂json数据-ModelBinder篇
2010/05/07 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
jQuery实现图片上传和裁剪插件Croppie
2015/11/29 Javascript
基于JS代码实现当鼠标悬停表格上显示这一格的全部内容
2016/06/12 Javascript
js date 格式化
2017/02/15 Javascript
EasyUI中的dataGrid的行内编辑
2017/06/22 Javascript
Vue.js项目部署到服务器的详细步骤
2017/07/17 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
LayUI动态设置checkbox不显示的解决方法
2019/09/02 Javascript
JS实现分页导航效果
2020/02/19 Javascript
vue data变量相互赋值后被实时同步的解决步骤
2020/08/05 Javascript
Vue单页面应用中实现Markdown渲染
2021/02/14 Vue.js
Python中with及contextlib的用法详解
2017/06/08 Python
Python3实现的简单验证码识别功能示例
2018/05/02 Python
Pytorch GPU显存充足却显示out of memory的解决方式
2020/01/13 Python
Python 剪绳子的多种思路实现(动态规划和贪心)
2020/02/24 Python
Python实现清理微信僵尸粉功能示例【基于itchat模块】
2020/05/29 Python
django表单中的按钮获取数据的实例分析
2020/07/31 Python
Opencv常见图像格式Data Type及代码实例
2020/11/02 Python
如何用border-image实现文字气泡边框的示例代码
2020/01/21 HTML / CSS
伦敦最著名的老字号百货公司:Selfridges(塞尔福里奇百货)
2016/07/25 全球购物
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
美津浓巴西官方网站:Mizuno巴西
2019/07/24 全球购物
工商治理实习生的自我评价
2014/01/15 职场文书
聚美优品广告词改编
2014/03/14 职场文书
关于环保的建议书
2014/05/12 职场文书
解决Pytorch半精度浮点型网络训练的问题
2021/05/24 Python
Oracle数据库中通用的函数实例详解
2022/03/25 Oracle
PostgreSQL逻辑复制解密原理解析
2022/09/23 PostgreSQL