LSTMpython代码
时间: 2023-10-13 11:27:57 浏览: 33
以下是一个简单的LSTM模型的Python代码示例:
```python
import numpy as np
import tensorflow as tf
# 设置随机种子
tf.set_random_seed(1)
np.random.seed(1)
# 定义超参数
TIME_STEP = 10 # 时间步长
INPUT_SIZE = 1 # 输入维度
CELL_SIZE = 32 # 隐层单元数
LR = 0.02 # 学习率
# 定义数据
steps = np.linspace(0, np.pi*2, 100, dtype=np.float32)
x_np = np.sin(steps)
y_np = np.cos(steps)
# 定义输入和输出
input_data = tf.placeholder(tf.float32, [None, TIME_STEP, INPUT_SIZE])
output_data = tf.placeholder(tf.float32, [None, TIME_STEP, INPUT_SIZE])
# 定义LSTM模型
rnn_cell = tf.contrib.rnn.BasicLSTMCell(num_units=CELL_SIZE)
init_state = rnn_cell.zero_state(batch_size=1, dtype=tf.float32)
outputs, final_state = tf.nn.dynamic_rnn(
cell=rnn_cell, inputs=input_data, initial_state=init_state, time_major=False)
outs2D = tf.reshape(outputs, [-1, CELL_SIZE])
net_outs2D = tf.layers.dense(outs2D, INPUT_SIZE)
outs = tf.reshape(net_outs2D, [-1, TIME_STEP, INPUT_SIZE])
# 定义损失函数和优化器
loss = tf.losses.mean_squared_error(output_data, outs)
train_op = tf.train.AdamOptimizer(LR).minimize(loss)
# 创建会话并训练模型
sess = tf.Session()
sess.run(tf.global_variables_initializer())
for step in range(1000):
start, end = step * np.pi, (step+1)*np.pi
steps = np.linspace(start, end, TIME_STEP)
x = np.sin(steps)[np.newaxis, :, np.newaxis]
y = np.cos(steps)[np.newaxis, :, np.newaxis]
_, loss_ = sess.run([train_op, loss], {input_data: x, output_data: y})
if step % 100 == 0:
print('train loss: %.4f' % loss_)
# 测试模型
test_steps = np.linspace(np.pi, np.pi*3, TIME_STEP)
test_x = np.sin(test_steps)[np.newaxis, :, np.newaxis]
pred_y = sess.run(outs, {input_data: test_x})
```