簡體   English   中英

重塑Keras的1D numpy陣列

[英]Reshape 1D Numpy Array for Keras

我正在使用keras,當我嘗試model.fit時會拋出錯誤,因為X_Train和Y_Train輸入的形狀不兼容。

我擁有的數據是10個輸入和1個輸出的系統。 而且我正在使用9次數據迭代作為測試,因此我有9個形狀為[10,1]的向量的列表,因此,X_Train.shape = [9,10,1]是可以理解的。 我的輸出是9個值的列表,這些值使Y_Train.shape = [9,1]。 但是我得到這個錯誤:

tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [9,1] vs. [9,10,1]

我假設Y_Train向量的正確形狀必須為[9,1,1],但找不到找到它的形狀的方法。

基於此,我有兩個問題:[9,1,1]根據我對問題的描述是正確的預期形狀嗎? 以及如何使其符合預期形狀?

通過keras中的計算圖傳遞的輸入形狀為以下類型:

(?, x.shape[1], x.shape[2], ....)   #As seen in model.summary()

首先 ? 是傳遞樣本(數據集中的行)的通道。 您可以批量傳遞它們,以便在擬合模型本身時定義它們。

但是,當設置圖層的形狀時,將其設置為

(x.shape[1], x.shape[2], ....)

Keras會在批次開始時自動添加第一個通道。 因此,如果數據集中的每一行都是長度為10的一維數組。那么,

## For keras functional API
inp = Input((10,))

## For keras sequential API
model = Sequential([
    Dense(32, input_shape=(10,))
])

如果您使用3-D數據集,則數據集中的每個“行”或樣本都是(10,10)形狀的二維數組:

## For keras functional API
inp = Input((10,10))

## For keras sequential API
model = Sequential([
    Dense(32, input_shape=(10,10))
])

特定於您的問題,因為您有9個形狀為(10,1)的數組的列表。 您應該簡單地忽略9,因為在第一個通道上傳遞的是(?,10,1)。 因此,將輸入形狀定義為(10,)或(10,1)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM