python - 层 lstm_11 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到的完整形状:[None, 5000, 1, 6]
问题描述
我正在使用 Keras 开发比特币价格预测器。我从binance.com获得数据。数据结构是这样的,它是 5,000 小时:
[ ['1597773600000' '11983.22000000' '12010.95000000' '11948.40000000' '11978.18000000' '2344.24787500'] ['1597777200000' '11978.19000000' '12029.00000000' '11964.63000000' '11982.00000000' '1993.81400900'] ['1597780800000' '11981.99000000' '12037.86000000 ' '11978.07000000' '12022.99000000' '2092.06777400'] ... ['1586962800000' '6717.66000000' '6745.51000000' '6690.00000000' '6701.90000000' '3279.59274200'] ['1586966400000' '6701.90000000' '6749.69000000' '6690.00000000' '6729.58000000' '2511.60203300'] ['1586970000000' '6729.59000000' '6763.13000000' '6724.51000000' '6746.86000000''1660.33553000']]
形状= (5000, 6) 尺寸= 30000 ndim= 2
在每个条目中,第一个元素是时间戳。我需要将其重塑为(样本、时间戳、功能)。我是这样做的:
btcData = np.reshape(btcData,(5000, 1, 6))
然后我标准化数据并建立模型。型号在这里:
myModel = keras.Sequential(name='cryptoPredictor')
myModel.add(keras.Input(np.shape(train_data),))
myModel.summary()
myModel.add(LSTM(128, activation='tanh'))
myModel.summary()
myModel.add(LSTM(128, activation='tanh'))
myModel.summary()
myModel.add(Dense(1))
myModel.summary()
myModel.compile(optimizer='rmsprop', loss='mse', metrics=['mae'])
myModel.fit(train_data, test_data, batch_size=100, epochs=50, validation_split=15.0)
当我运行模型时,我收到此错误:
层 lstm_11 的输入 0 与层不兼容:预期 ndim=3,发现 ndim=4。收到的完整形状:[None, 5000, 1, 6]
我能做些什么来解决这个错误?
解决方案
您可能希望将数据重塑为形状,(5000,6)
因为 lstm 所需的第一个维度是 batch_size,然后是 timestep,然后是 sample。特征和批量大小在这里可以看作是同义词:
btcData = np.reshape(btcData,(5000,6))
推荐阅读
- python - Python Klein - 如何将 Excel 文件作为附件返回?
- java - MaterialAnimatedSwitch 保存状态
- javascript - 如何在正在测试的父对象中模拟子函数的输出?
- facebook - Facebook 与自定义图像单页应用程序共享
- javascript - .each() 将太多项目推送到数组
- azure - Azure MySQL数据库错误客户端和服务器无法通信,因为它们没有通用算法
- c++ - 空 grpc 客户端通道
- flutter - Flutter:跟踪应用打开的次数
- c# - 如何获取 HTTP Post 请求的 JSON 内容?
- ruby-on-rails - 添加“SameSite=None;” 通过 Rack 中间件到 Rails 的 cookie?