簡體   English   中英

InvalidArgumentError:logits 和標簽必須具有相同的第一維,得到 logits 形狀 [1,10] 和標簽形狀 [40]

[英]InvalidArgumentError: logits and labels must have the same first dimension, got logits shape [1,10] and labels shape [40]

我正在使用 Keras-Tuner 為我的 CNN 自動識別最佳參數。 我正在使用 Celeb_a 數據集。

您可以在此處找到我正在使用的代碼當我嘗試運行它時,我收到以下錯誤。

InvalidArgumentError:logits 和標簽必須具有相同的第一維,得到 logits 形狀 [1,10] 和標簽形狀 [40] [[node sparse_categorical_crossentropy/SparseSoftmaxCrossEntropyWithLogits/SparseSoftmaxCrossEntropyWithLogits(定義在 C:\Users\admin-sepr\anaconda tf\lib\site-packages\kerastuner\engine\tuner.py:141) ]] [Op:__inference_train_function_953]

我在其他地方看到這可能歸結為使用loss="categorical_crossentropy",當我編譯代碼時,他們建議嘗試使用loss="sparse_categorical_crossentropy",

當我這樣做時,我收到以下錯誤。

InvalidArgumentError:logits 和標簽必須是可廣播的:logits_size=[64,380192] labels_size=[64,40] [[node categorical_crossentropy/softmax_cross_entropy_with_logits(定義在 C:\Users\admin-sepr\anaconda3\envs\tf\lib -packages\kerastuner\engine\tuner.py:141) ]] [Op:__inference_train_function_6830]

兩個錯誤的 function 調用堆棧如下。

Function call stack:
train_function

我的 function train_function 如下(上面有完整的代碼):

train_generator = train_datagen.flow_from_dataframe(
                                        dataframe=train_split,
                                        directory=celeba.images_folder,
                                        x_col='image_id',
                                        y_col=celeba.features_name,
                                        target_size=TARGET_SIZE,
                                        batch_size=64,
                                        class_mode='raw',
                                        dtype=tf.float32)

我在這里嘗試了推薦的方法,但沒有成功。

您從 Celeb_A 數據集加載的數據看起來與您嘗試訓練的 model 不兼容。 從僅掃描代碼看來,您需要更改 output 密集層中的節點數。 這個數字(你目前有 10 個節點)應該與你期望預測的標簽數量相匹配。 從錯誤來看,您預測的標簽似乎有 40 個,但 model 認為只有 10 個。

我最好的猜測是將您的損失保持為分類交叉熵,並將您的 output 密集層更改為 Dense(40) 而不是 Dense(10)。

暫無
暫無

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

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