keras瞎搞系列-加载和保存模型
我们竟然会训练一些数据库,但是不可能每次遇到相同的结构and相同数据的时候,不可能每次都烧GPU去训练所以对于
每次训练的权重可以进行保存,留着下次再用。
对于keras来说加载和保存模型主要是依据model.save(),和model.load()。keras支持的数据库很多,所以除了h5应该还有别
的格式。
一小段线性回归的代码:
# -*- coding: utf-8 -*-
"""
Created on Tue Jan 9 18:30:55 2018
@author: lenovo
AlexNet
"""
import numpy as np
np.random.seed(1337)
from keras.models import Sequential
from keras.layers import Dense
from keras.models import load_model
X = np.linspace(-1,1,200)
np.random.shuffle(X)
Y = 0.5*X+2+np.random.normal(0,0.5,(200,))
X_train,Y_train = X[:160],Y[:160]
X_test,Y_test = X[160:],Y[160:]
model = Sequential()
model.add(Dense(units=1,input_dim=1))
model.compile(loss='mse',optimizer='sgd')
for step in range(1000):
cost = model.train_on_batch(X_train,Y_train)
#print(cost)
print('test before save: ',model.predict(X_test[0:2]))
print('test before valid:',Y_test[0:2])
#save
model.save('liner.h5')
del model
model = load_model('liner.h5')
print('test after load: ',model.predict(X_test[0:2]))
结果:
test before save: [[ 1.9428829 ]
[ 2.19649029]]
test before valid: [ 2.13569572 1.21056142]
test after load: [[ 1.9428829 ]
[ 2.19649029]]
看来一层还是有误差的,且比较大。。。