keras操作的小技巧

1、存储model

Keras模型保存和加载的两种方式https://blog.csdn.net/coraline_m/article/details/78336324

# 保存模型 model.save(file_path)
model_name = '{}/{}_{}_{}_v2.h5'.format(params['model_dir'],params['filters'],params['pool_size_1'],params['pool_size_2'])
model.save(model_name)

# 保存模型图
from keras.utils import plot_model
# 需要安装pip install pydot
model_plot = '{}/{}_{}_{}_v2.png'.format(params['model_dir'],params['filters'],params['pool_size_1'],params['pool_size_2'])
plot_model(model, to_file=model_plot)

 

2、加载model

from keras.models import load_model

model_path = '../docs/keras/100_2_3_v2.h5' model = load_model(model_path)

 

3、模型可视化

keras中文文档 https://keras-cn.readthedocs.io/en/latest/other/visualization/

keras.utils.vis_utils模块提供了画出Keras模型的函数(利用graphviz)

该函数将画出模型结构图,并保存成图片:

from keras.utils import plot_model
plot_model(model, to_file='model.png')

plot_model接收两个可选参数:

  • show_shapes:指定是否显示输出数据的形状,默认为False
  • show_layer_names:指定是否显示层名称,默认为True

 

4、回调函数EarlyStopping

https://keras-cn.readthedocs.io/en/latest/legacy/other/callbacks/#earlystopping

https://blog.csdn.net/ukakasu/article/details/80089866

目的:防止过拟合

# early stoppping
from keras.callbacks import EarlyStopping
early_stopping = EarlyStopping(monitor='val_loss', patience=50, verbose=2)
# 训练
history = model.fit(train_X, train_y, epochs=300, batch_size=20, validation_data=(test_X, test_y), verbose=2, shuffle=False, callbacks=[early_stopping])


monitor: 需要监视的量,val_loss,val_acc
patience: 当early stop被激活(如发现loss相比上一个epoch训练没有下降),则经过patience个epoch后停止训练
verbose: 信息展示模式
mode: 'auto','min','max'之一,在min模式训练,如果检测值停止下降则终止训练。在max模式下,当检测值不再上升的时候则停止训练。

5、划分验证集的方法

https://blog.csdn.net/grllery/article/details/83685306

根据验证集的loss可以终止过拟合

# method1
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10)

validation_split:0~1之间的浮点数,用来指定训练集的一定比例数据作为验证集。验证集将不参与训练,并在每个epoch结束后测试的模型的指标,如损失函数、精确度等。

注意,validation_split的划分在shuffle之前,因此如果你的数据本身是有序的,需要先手工打乱再指定validation_split,否则可能会出现验证集样本不均匀。 

# method2
# MLP with manual validation set
from keras.models import Sequential
from keras.layers import Dense
from sklearn.model_selection import train_test_split
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# split into 67% for train and 33% for test
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.33, random_state=seed)
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
model.fit(X_train, y_train, validation_data=(X_test,y_test), epochs=150, batch_size=10)

Keras允许在训练模型的时候手动指定验证集.

例如,用sklearn库中的train_test_split()函数将数据集进行切分,然后在kerasmodel.fit()的时候通过validation_data参数指定前面切分出来的验证集.

 

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值