1.定义模型
(1)主要使用Sequential()类下的LSTM()和Dense(),如:
layers = [LSTM(2),Dense(1)]
model = Sequential(layers)
第一个隐层需要定义输入,输入的维度必须是三维的(samples,time steps,features)
可以使用Numpy的reshape函数实现维度转换,如将2D转为3D:data = data.reshape((data.shape[0], data.shape[1], 1))
(2)最后一层激活函数的选用
2.编译模型
定义优化算法和损失函数,如:
algorithm = SGD(lr=0.1, momentum=0.3)
model.compile(optimizer=algorithm, loss= mse )
或写在一起:
model.compile(optimizer= sgd , loss= mean_squared_error , metrics=[ accuracy ])
优化算法在Keras中经常使用的有:
损失函数通常为:
3.拟合模型
模型训练中通常需要设置的参数是batch_size和epochs,模型将返回训练过程中的模型性能汇总,每个epoch记录一次,如loss和任何编译模型阶段定义的metrics,这些数据可以用于绘图。
history = model.fit(X, y, batch_size=10, epochs=100, verbose=0)
4.评估模型
使用测试评估集在模型上进行评估:
如: loss, accuracy = model.evaluate(X, y, verbose=0)
5.使用模型进行预测
使用predicte()函数predictions = model.predict(X, verbose=0)
rom numpy import array
data = array([0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0])
#将一维输入序列转换为keras要求的3维序列(1sample,10time steps,1 feature)
data = data.reshape((1,10,1))
print(data.shape)
输出:
(1, 10, 1)
现在数据可以输入LSTM,如:
model = Sequential()
model.add(LSTM(32,input_shape=(10,1)))
from numpy import array
data = array([
[0.1,1.0],
[0.2,0.9],
[0.3,0.8],
[0.4,0.7],
[0.5,0.6],
[0.6,0.5],
[0.7,0.4],
[0.8,0.3],
[0.9,0.2],
[1.0,0.1]
])
#将数据reshape为1sampe,10time-steps,2features
data = data.reshape(1,10,2)
print(data.shape)
输出:
(1, 10, 2)
现在数据可以输入LSTM
model = model.Sequential()
model.add(LSTM(32,input_shape=(10,2)))
Keras中LSTM的输入小结:
I