![](/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.