我正在嘗試第一次實(shí)施 Keras(對(duì)于這個(gè)愚蠢的問題很抱歉)作為一個(gè)更廣泛的項(xiàng)目的一部分,以制作一個(gè)學(xué)習(xí)連接 4 的 AI。作為其中的一部分,我通過一個(gè) NN 一個(gè) 6*7 的網(wǎng)格它輸出一個(gè)包含 7 個(gè)值的數(shù)組,給出游戲中每一列的選擇概率。以下是 Model.summary() 方法的輸出以獲得更多詳細(xì)信息:______________________________________________________________Layer (type) Output Shape Param # =================================================================flatten (Flatten) (None, 42) 0 _________________________________________________________________dense (Dense) (None, 20) 860 _________________________________________________________________dense_1 (Dense) (None, 20) 420 _________________________________________________________________dense_2 (Dense) (None, 7) 147 =================================================================Total params: 1,427Trainable params: 1,427Non-trainable params: 0__________________________________________________________________________________________________________________________________當(dāng)我傳遞形狀為 (1, 6, 7) 的 numpy 數(shù)組時(shí),該模型將給出(目前是隨機(jī)的)預(yù)測(cè),但是,當(dāng)我嘗試使用形狀為 (221, 6, 7) 的數(shù)組訓(xùn)練模型時(shí),數(shù)據(jù)和標(biāo)簽的形狀數(shù)組 (221, 7) 我收到此錯(cuò)誤:ValueError:檢查目標(biāo)時(shí)出錯(cuò):預(yù)期dense_2具有形狀(1,)但得到形狀為(7,)的數(shù)組這是我用來訓(xùn)練模型的代碼(輸出 (221, 6, 7) 和 (221, 7)):board_tensor = np.array(full_board_list)print(board_tensor.shape)label_tensor = np.array(full_label_list)print(label_tensor.shape)self.model.fit(board_tensor, label_tensor)(該模型是 AI 對(duì)象的一部分,因此可以與其他類型的 AI 對(duì)象進(jìn)行比較)這是成功預(yù)測(cè)一批大小為 1 的代碼,由表示板的二維列表生成(它輸出 (1 , 6, 7) 和 (1, 7)):input_tensor = np.array(board.board)input_tensor = np.expand_dims(input_tensor, 0)print(input_tensor.shape)probability_distribution = self.model.predict(input_tensor)print(probability_distribution.shape)我意識(shí)到該錯(cuò)誤可能是由于我對(duì) Keras 中期望提供的方法缺乏了解;所以作為一個(gè)小小的旁注,有沒有人有任何好的,徹底的學(xué)習(xí)資源,真正讓你了解每種方法在做什么(即,不僅僅是告訴你輸入哪些代碼來制作圖像識(shí)別器),這將是可以理解的對(duì)于像我這樣的 Keras 和 Tensorflow 新手?
1 回答

SMILET
TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
您正在使用sparse_categorical_crossentropy
損失,它采用整數(shù)標(biāo)簽(不是單熱編碼的),而您的標(biāo)簽是單熱編碼的。這就是您收到錯(cuò)誤的原因。
修復(fù)它的最簡(jiǎn)單方法是將 loss 更改為categorical_crossentropy
.
添加回答
舉報(bào)
0/150
提交
取消