美文网首页
第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