附上一个简单lstm结构的网络,麻雀虽小但是五脏俱全,其中包含了很多优化方法:
拟合sin函数
import tensorflow as tf
import numpy as np
steps = 32
batch_size = 32
train_size = 7000
LSTM_KEEP_PROB = 0.9
NUM_LAYERS = 2
HIDDEN_SIZE = 64
train_step = 10000
X = np.linspace(0, 1000, 10000)
y = np.sin(X)
def data(y):
data = []
target = []
y = y.tolist()
for i in range(len(y) - steps - 1):
data.append(y[i: i + steps])
target.append(y[i + steps])
return ((np.array(data)[:train_size])[:, :, np.newaxis], np.array(target)[:train_size][:, np.newaxis])\
, ((np.array(data)[train_size:])[:, :, np.newaxis], np.array(target)[train_size:][:, np.newaxis])
# model
tf.reset_default_graph()
inputs = tf.placeholder(tf.float32, [None, steps, 1])
outputs = tf.placeholder(tf.float32, [None, 1])
cell = tf.nn.rnn_cell.BasicLSTMCell
with tf.variable_scope('cell'):
rnn_cell = []