1from keras.datasets import mnist 2from keras.layers import LSTM, Dense 3from keras.models import Sequential 4from keras.utils import np_utils 5 6(X_train, y_train), (X_test, y_test) = mnist.load_data() 7 8X_train = X_train.astype('float32') / 255. 9X_test = X_test.astype('float32') / 255. 10 11Y_train = np_utils.to_categorical(y_train, 10) 12Y_test = np_utils.to_categorical(y_test, 10) 13 14model = Sequential() 15model.add(LSTM(30, input_shape=X_train.shape[1:])) 16model.add(Dense(10, activation='softmax')) 17model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) 18model.summary() 19 20model.fit(X_train, Y_train, nb_epoch=50, batch_size=128, shuffle=True, verbose=2) 21 22 23================================================================= 24lstm_1 (LSTM) (None, 30) 7080 25_________________________________________________________________ 26dense_1 (Dense) (None, 10) 310 27================================================================= 28Total params: 7,390 29Trainable params: 7,390 30Non-trainable params: 0
这次只有一个新层LSTM,他的输出维度是30,他适合于处理和预测时间序列中间隔和延迟相对较长的重要事件,具体怎么回事呢,后续理论部分在集中学。可以看到Keras还是非常方便的,要用LSTM的话直接一个函数就搞定了