Keras实践笔记7——简易长短记忆网络LSTM

from keras.datasets import mnist
from keras.layers import LSTM, Dense
from keras.models import Sequential
from keras.utils import np_utils

(X_train, y_train), (X_test, y_test) = mnist.load_data()

X_train = X_train.astype('float32') / 255.
X_test = X_test.astype('float32') / 255.

Y_train = np_utils.to_categorical(y_train, 10)
Y_test = np_utils.to_categorical(y_test, 10)

model = Sequential()
model.add(LSTM(30, input_shape=X_train.shape[1:]))
model.add(Dense(10, activation='softmax'))
model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy'])
model.summary()

model.fit(X_train, Y_train, nb_epoch=50, batch_size=128, shuffle=True, verbose=2)
=================================================================
lstm_1 (LSTM)                (None, 30)                7080      
_________________________________________________________________
dense_1 (Dense)              (None, 10)                310       
=================================================================
Total params: 7,390
Trainable params: 7,390
Non-trainable params: 0

这次只有一个新层LSTM,他的输出维度是30,他适合于处理和预测时间序列中间隔和延迟相对较长的重要事件,具体怎么回事呢,后续理论部分在集中学。可以看到Keras还是非常方便的,要用LSTM的话直接一个函数就搞定了

转载于:https://my.oschina.net/xiaomaijiang/blog/1827503

LSTM(长短时记忆网络,Long Short-Term Memory Network)是一种特殊的递归神经网络(RNN),它通过引入“门”结构解决了传统RNN存在的梯度消失或爆炸的问题,并能有效地处理时间序列数据。 下面是一个简单的Python预测代码示例,基于Keras框架构建了一个基本的LSTM模型用于股票价格预测: ```python # 导入必要的库 import numpy as np import pandas as pd from sklearn.preprocessing import MinMaxScaler from keras.models import Sequential from keras.layers import Dense, LSTM # 加载并预处理训练集数据 data = pd.read_csv('stock_prices.csv') # 替换为实际文件路径 training_set = data.iloc[:, 1:2].values # 取第二列作为特征值(例如收盘价) sc = MinMaxScaler(feature_range=(0, 1)) scaled_training_data = sc.fit_transform(training_set) X_train = [] y_train = [] for i in range(60, len(scaled_training_data)): # 每次取前60天的数据输入 X_train.append(scaled_training_data[i-60:i, 0]) y_train.append(scaled_training_data[i, 0]) X_train, y_train = np.array(X_train), np.array(y_train) # Reshape the input to be [samples, time steps, features] X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 1)) # 构建LSTM模型 model = Sequential() model.add(LSTM(units=50, return_sequences=True, input_shape=(X_train.shape[1], 1))) model.add(LSTM(units=50)) model.add(Dense(units=1)) # 编译并拟合模型 model.compile(optimizer='adam', loss='mean_squared_error') history=model.fit(X_train, y_train, epochs=100, batch_size=32) # 测试阶段略过... ``` 此段代码仅展示了如何创建及训练一个基础版本的LSTM来进行预测。在实际应用中还需要考虑更多因素如超参调整、正则化等以优化性能;同时也要保证测试数据与训练保持一致性的预处理步骤,在此基础上进行评估和验证最终的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值