如何创建多维矩阵作为神经网络的输入?

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

我正在尝试创建具有多维输入矩阵的神经网络。输入的大小可以为2x7、8x7或任何具有7列的尺寸。

我的问题是,如何创建一个可以包含多个具有不同维度的矩阵以供神经网络使用的训练DataFrame?我尝试了针对每个矩阵的for循环训练模型,但应该有一些更合适的方法来创建这样的数据集。

注意:我正在尝试获得具有所有这些不同维矩阵的单个输入,并且可以轻松地映射到它们各自的输出。

这是我的模型的代码:

model.add(Lambda(lambda x: tf.expand_dims(x, axis=1), input_shape=[7]))
model.add(Dense(2048, activation='tanh'))
model.add(Dense(1024, activation='tanh'))
model.add(Dense(512, activation='tanh'))
model.add(Dense(216, activation='tanh'))
model.add(Flatten())
model.add(Dense(128, activation='tanh'))
model.add(Dense(7, activation='tanh'))
model.summary()

我的拟合模型循环如下:

for user_id in user_ids:
    df = dailytable[dailytable['user_id']==user_id]
    if df.shape[0] > 3:
        X = df.iloc[:-1, :]
        Y = df.iloc[-1, :]
        Y = tf.reshape(Y, (1, 7))
        if len(X.axes[0].tolist()) > 3:
            model.fit(X, Y, epochs=5, steps_per_epoch=1)

我想创建一些包含所有矩阵的数据结构。它看起来像3维矩阵。如上所述,所有这些矩阵都有不同的输入形状。但是具有相同的输出,即1x7。我不想使用循环结构,而是想在训练开始时传递单个输入。

python tensorflow deep-learning feature-extraction
2个回答
0
投票

对任何时间序列建模都有相同的问题。您应该看一下CNN或RNN,因为它们允许使用可变尺寸。对于CNN,您可以输入具有7个通道和可变长度的输入。

通过完全连接的层,您可以得到形状固定的输入。因此,您可以应用零填充来满足已建议的最大大小,也可以使用开窗后的移位信号作为输入(CNN就是这样做的)。


-1
投票

零填充怎么样?这将使您所有输入的大小相等。

© www.soinside.com 2019 - 2024. All rights reserved.