输入数据LSTM网络Keras

问题描述 投票:0回答:2

我有10个阵列。它们中的每一个表示数据点(输入)。阵列的形状是(16,3),(34,3)等。由于需要LSTM数据3dim我重塑每个那些10个阵列。例如:如果是(16,3)现在是(1,16,3)。我试图让((1,16,3),(1,34,3),等等。)当我的阵列形状,换言之10个阵列中一个numpy的阵列与每个形状(如图1所示,东西,3的)。当我用所有10个阵列养活数据作为一个我得到以下错误:

当检查错误模型输入:要传递给你的模型与NumPy阵列的列表不是模型预期的大小。期望看到1点阵列(一个或多个),而是得到了10个阵列的下面的列表。

但是,如果我养活一个标签,它的工作原理和overfits这些阵列中的一个(因为它应该)。如果的batch_size = 1时,不应该程序采取这些10个样品来训练上的一个?

这里是我的代码:

import os
import numpy as np
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM

data = []
directory = 'realData'
for filename in os.listdir(directory):
    data.append(np.load('realData/' + filename))

for i in range(len(data)):
    data[i] = data[i].reshape(1,data[i].shape[0],3)

sad = np.array([[0]] * 2)
okay = np.array([[1]] * 3)
happy = np.array([[2]] * 2)
perfect = np.array([[3]] * 3)

labels = np.concatenate([sad,okay,happy,perfect],axis=0)

model = Sequential()
model.add(LSTM(32, input_shape=(None,3)))
model.add(Dense(1))

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['accuracy'])

print('Train...')    
model.fit(data, labels,
          batch_size=1,
          epochs=15,
          validation_data=(data, labels))

score, acc = model.evaluate(data, labels, batch_size=1)
print('Test score:', score)
print('Test accuracy:', acc)
python machine-learning keras lstm data-science
2个回答
© www.soinside.com 2019 - 2024. All rights reserved.