Numpy 数组作为模型的输入

问题描述

我有一个格式为 [train[:,:,0:count]] 的模型输入,如下所示

n_step = 10
count = 8
def create_model():
    input = Input(shape=(n_steps,count),name='input')
    --------
    --------
    rest of the network

if __name__ == "__main__":

    model = create_model()
    history = model.fit([train[:,0:count]],[y_train],epochs=50,batch_size=64,validation_data=[[val[:,y_validation])

    validationPredict = model.predict([val[:,verbose=2)

第一维是样本,第二维是时间步长,第三维是特征(这里是 8 个)。 我有每个样本的时间戳和功能(在列表中)。但我不明白如何将它们存储在一个 numpy 数组中,以便我可以使用相同的格式(3d)来训练网络。

任何建议都会有很大帮助。谢谢!

解决方法

据我所知 - 您需要将长二维序列转换为短序列。

您必须创建长度为 10 的序列:

n_step = 10
inp = np.random.uniform(size=(100,20)).tolist() # long 2D sequence
labels = np.random.uniform(size=(100,)).tolist() # long 1D labels

sequences = [inp[x:x+n_step] for x in range(len(inp)-n_step)]
train = np.array(sequences) # 3D input numpy array
sequences = [labels[x:x+n_step] for x in range(len(inp)-n_step)]
y_train = np.array(sequences) # 2D labels numpy array