我目前正在使用 Keras 開發一個簡單的神經網路,但我的標簽遇到了問題。網路正在做出二元選擇,因此,我的標簽都是 1 和 0。我的資料由一個 3d NumPy 陣列組成,基本上是來自一堆影像的像素資料。它的形狀是 (560, 560, 32086)。但是,由于前兩個維度只是像素,我不應該為每個維度分配一個標簽,因此我嘗試使用形狀 (1, 1, 32086) 制作標簽陣列,以便每個影像只有 1 個標簽。但是,當我嘗試使用以下代碼編譯它時:
model = Sequential(
[
Rescaling(1.0 / 255),
Conv1D(32, 3, input_shape=datax.shape, activation="relu"),
Dense(750, activation='relu'),
Dense(2, activation='sigmoid')
]
)
model.compile(optimizer=SGD(learning_rate=0.1), loss="binary_crossentropy", metrics=['accuracy'])
model1 = model.fit(x=datax, y=datay, batch_size=1, epochs=15, shuffle=True, verbose=2)
我收到此錯誤“ValueError:資料基數不明確:x 大小:560 y 大小:1 確保所有陣列包含相同數量的樣本。” 我認為這意味著標簽必須與輸入資料的大小相同,但這對于每個像素都有一個單獨的標簽沒有意??義。
資料是通過回圈遍歷目錄中的檔案并讀取其像素資料的 for 回圈來收集的。然后我將它添加到 NumPy 陣列并將它們對應的標簽添加到標簽陣列。對這個問題的任何幫助將不勝感激。
uj5u.com熱心網友回復:
所述ValueError,因為第一尺寸被認為是樣品和需要的數量是相同的用于產生x和y。在您的示例中,情況并非如此。您需要datax有形狀(32086, 560, 560)并且datay應該是(32086,)(因為您使用的是二元交叉熵損失)。
看看這個例子并注意 60000 個訓練影像是如何形成的(60000, 28, 28)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/367996.html
上一篇:在numpy中使用條件取上一行
