1 回答

TA貢獻1829條經驗 獲得超13個贊
您的問題來自最后一層的大?。楸苊膺@些錯誤,始終希望對N_IMAGES、WIDTH、HEIGHT和使用 python 常量):N_CHANNELSN_CLASSES
用于圖像分類
您應該為每張圖片分配一個標簽。嘗試切換labels:
import tensorflow as tf
import numpy as np
from sklearn.model_selection import train_test_split
np.random.seed(4213)
N_IMAGES, WIDTH, HEIGHT, N_CHANNELS = (500, 160, 160, 10)
N_CLASSES = 5
data = np.random.randint(low=1,high=29, size=(N_IMAGES, WIDTH, HEIGHT, N_CHANNELS))
labels = np.random.randint(low=0,high=N_CLASSES, size=(N_IMAGES))
#...
用于語義分割
確保您的分類器(網絡的最后一層)大小相應。在這種情況下,每個像素需要 1 個類別:
#...
model = tf.keras.Sequential()
model.add(arch)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(width * height))
model.add(tf.keras.layers.Reshape([width , height]))
#...
這是您可以獲得的最簡單的方法。相反,您可以設置多個反卷積層作為分類器,或者您甚至可以翻轉架構arch并使用它來生成分類結果。正交地,您可以one_hot對標簽執行編碼,從而將它們擴展一個因子N_CLASSES,有效地乘以最后一層中的神經元數量。
添加回答
舉報