![](/img/trans.png)
[英]Approximation of funtion with multi-dimensional output using a keras neural network
[英]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.