我正在嘗試構(gòu)建一個(gè) LSTM 模型,以使用 Zipcode 或 PinCode 過去 7 天的溫度、降雨量等來預(yù)測(cè)給定日期的溫度。我知道訓(xùn)練數(shù)據(jù)集需要被塑造成(觀察、時(shí)間步長、特征)。我想我的情況下的特征是溫度、降雨量和時(shí)間步長為 7。因此,如果我有 2 個(gè)特征和 7 個(gè)時(shí)間步長,則一次觀察總共會(huì)有 14 個(gè)變量。我還具有狀態(tài)、區(qū)域(比如北、西、東、中等)等所有 7 個(gè)時(shí)間步共有的特征。由于每個(gè)觀測(cè)值都是一個(gè)郵政編碼,對(duì)于一個(gè)郵政編碼的所有 7 天(7 個(gè)時(shí)間步長),郵政編碼所屬的地理州和區(qū)域?qū)⑹窍嗤?。由于我們不能?LSTM 輸入特征(對(duì)所有時(shí)間步都是通用的),我已經(jīng)使用 Keras 函數(shù)式 API 將這些時(shí)間特征提供給 LSTM,并獲取 LSTM 的輸出并將其與非時(shí)間特征(狀態(tài)、區(qū)域等)連接起來,然后在最后有一個(gè)密集層。下面是我的代碼Input_LSTM = Input(shape=(7, 2), batch_size=32) # 7 timesteps and 2 featuresx = LSTM(5, stateful=True)(Input_LSTM)x = Dropout(0.2)(x)Input_MLP = Input(shape=(261,),batch_size=32) x = concatenate([x,Input_MLP], axis=1) # Join non-temporal input with LSTM o/p to be fed to a Dense # layerOutput = Dense(1)(x)model = Model([Input_LSTM,Input_MLP],Output)因?yàn)槲乙呀?jīng)聲明 LSTM 是有狀態(tài)的,所以我已經(jīng)為時(shí)態(tài)和非時(shí)態(tài)輸入提供了 batch_size。當(dāng)我嘗試使用行“x = concatenate([x,Input_MLP], axis=1)” 進(jìn)行連接時(shí),出現(xiàn)錯(cuò)誤 File "<__array_function__ internals>", line 6, in concatenateValueError: zero-dimensional arrays cannot be concatenated”連接的兩個(gè)元素的形狀如下x.shapeOut[186]: TensorShape([Dimension(32), Dimension(5)]) # Here 5 is the number of neurons in LSTM, 32 is the batch sizeInput_MLP.shapeOut[187]: TensorShape([Dimension(32), Dimension(261)]) # Here 261 is the no. of non-temporal features and 32 is the batch size從網(wǎng)上查到零維數(shù)組是標(biāo)量。但是從上面它們的形狀來看,它們似乎并不是標(biāo)量。我還嘗試了一個(gè)以 Input_MLP 作為輸入的 Dense 層,并嘗試將這個(gè) Dense 層的輸出與 x 連接起來,但沒有成功。我在網(wǎng)上找不到答案。我究竟做錯(cuò)了什么?任何幫助將不勝感激。
1 回答

慕后森
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
我找到了問題所在。連接 keras 層的函數(shù)必須與大寫字母 C 連接。因?yàn)槲沂褂玫氖菐в行懽帜浮癱”的函數(shù),所以它是 numpy 函數(shù),因此它給出了那個(gè)錯(cuò)誤。一個(gè)小錯(cuò)字讓我浪費(fèi)了很多時(shí)間
添加回答
舉報(bào)
0/150
提交
取消