美文网首页
第8章 循环神经网络 样例错误

第8章 循环神经网络 样例错误

作者: 杭州夜未央 | 来源:发表于2018-07-08 17:13 被阅读0次

这一章最后给的lstm样例有个错误,导致最后画出来的图有问题。

原来的generate_data方法以及生成数据的code如下:

def generate_data(seq):

    X = []

    y = []

    # 序列的第i项和后面的TIMESTEPS-1项合在一起作为输入;第i + TIMESTEPS项作为输

    # 出。即用sin函数前面的TIMESTEPS个点的信息,预测第i + TIMESTEPS个点的函数值。

    for i in range(len(seq) - TIMESTEPS):

        X.append([seq[i: i + TIMESTEPS]])

        y.append([seq[i + TIMESTEPS]])

    return np.array(X, dtype=np.float32), np.array(y, dtype=np.float32) 

# 用正弦函数生成训练和测试数据集合。

test_start = (TRAINING_EXAMPLES + TIMESTEPS) * SAMPLE_GAP

test_end = test_start + (TESTING_EXAMPLES + TIMESTEPS) * SAMPLE_GAP

train_X, train_y = generate_data(np.sin(np.linspace(

    0, test_start, TRAINING_EXAMPLES + TIMESTEPS, dtype=np.float32)))

test_X, test_y = generate_data(np.sin(np.linspace(

    test_start, test_end, TESTING_EXAMPLES + TIMESTEPS, dtype=np.float32)))

这样生成的数据的shape分别如下:

train_X:(10000,1,10)

test_y:(1000,1,10)

使用lstm model预测test后,画出来的图片如下:

图1

图片只有橙色(real_sin)的图形,没有蓝色(predictions)的图形。注意:这里并不是二者完全重合的缘故。

主要的原因是使用generate_data()方法产生出来的数据维度不对,不应该是(?,1,10)这样,而应该是(?,10,1)。喂给lstm模型的(x,y,z)应该分别对应:(batchsizze,maxtime,input)。可以参见Tensorflow的官方文档https://tensorflow.google.cn/api_docs/python/tf/nn/dynamic_rnn。

改的话,可以在最后转化一下:

train_X = np.reshape(train_X,(10000,10,1))

test_X = np.reshape(test_X,(1000,10,1))

运行code之后,生成的图像如下:

图片2

虽然大部分重叠,但是明显能看出蓝色预测图形的。

相关文章

网友评论

      本文标题:第8章 循环神经网络 样例错误

      本文链接:https://www.haomeiwen.com/subject/lvvouftx.html