深度学习 LSTM

来源:互联网 发布:mac打字左下角 编辑:程序博客网 时间:2024/06/10 14:11

  • 第一要明确的是神经网络所处理的单位全部都是:向量
  • 常规Recurrent (RNN/LSTM/GRU) 输入和输出:张量
输入张量形状:(time_steps, n_samples, dim_input)
输出张量形状:(time_steps, n_samples, dim_output)
注:同样是保留了Mini-batch gradient descent的训练方式,但不同之处在于多了time step这个维度。

作者:YJango
链接:https://www.zhihu.com/question/41949741/answer/124898736
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

1. 一般从数据集拆分成两部分:训练集(训练样本和验证样本)、测试集

def load_data(file_name, sequence_length=14, split=0.8):表示数据集*0.8是train集,剩下20%是test集

2. 时间步长是14,入参是一个矩阵,14列

3. 验证集:从train集中在提取一部分作为验证集

def train_model(train_x, train_y, test_x, test_y):
    model = build_model()
    try:
      model.fit(train_x, train_y, batch_size=512, nb_epoch=10, validation_split=0.1)

train集*0.1作为验证集

4. batchsize:批大小。在深度学习中,一般采用SGD训练,即每次训练在训练集中取batchsize个样本训练;

5.iteration:1个iteration等于使用batchsize个样本训练一次;

6. epoch:拟合次数,epoch表示使用训练集中的全部样本训练次数;


举个例子,训练集有1000个样本,batchsize=10,epoch=1 那么:

训练完整个样本集需要:

100次iteration,1次epoch。

7.nsteps就是rnn的time step,在lstm类似于sequence_length ,diminput就是单个rnn单元输入的数据维度。很显然 nsteps* diminput 就是单个mnist的数据维度。

def build_model():
    # input_dim是输入的train_x的最后一个维度,train_x的维度为(n_samples, time_steps, input_dim)
    model = Sequential()
    model.add(LSTM(input_dim=1, output_dim=50, return_sequences=True))

0 0