繁体   English   中英

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

[英]How to create multi-dimensional matrices as input to neural network?

我正在尝试创建一个具有多维输入矩阵的神经网络。 输入的大小可以是 2x7、8x7 或任何具有 7 列的此类尺寸。 (此输入用于如下所示的 for 循环结构)

我的问题是,如何创建一个训练 DataFrame 可以包含多个具有不同维度的此类矩阵来馈送神经网络? 我尝试在每个矩阵的 for 循环上训练 model,但应该有一些更合适的方法来创建这样的数据集。

注意:我正在尝试获得具有所有这些不同维度矩阵的单个输入,并且可以轻松地将 map 转换为它们各自的输出。 所以输入应该看起来像 (a, b, 7) 其中a是具有不同行长的矩阵的数据点数, b是该特定矩阵中的行数,7 是所有矩阵中的列数.

该数据是用户按时间创建的时间序列数据的示例。 所以我需要保持每一行单个矩阵的顺序。 output 将在用户下次创建新行时生成。 请理解,这个问题的重点不是 model,而是如何为 model 表示这个数据。

这是我的 model 的代码:

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()

我适合 model 的循环如下所示:

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 维矩阵。 如上所述,所有这些矩阵都有不同的输入形状。 但是具有相同的 output 即 1x7。 我不想使用循环结构,而是想在训练开始时传递一个输入。

对任何时间序列进行建模都有同样的问题。 你应该看看 CNN 或 RNN,因为它们承认可变维度。 在 CNN 的情况下,您可以有 7 个通道和可变长度的输入。

使用完全连接的层,您有一个固定形状的输入。 因此,您要么应用零填充来满足已经建议的最大大小,要么将窗口移位信号用作输入(这是 CNN 所做的)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM