簡體   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