我一直在試圖解決這個問題,目前爲止已經有24個小時了,但不幸的是不能拿出一些東西。從RGB圖像的綠色通道培訓Keras CNN模型
問題很簡單:我在2個子目錄中有2個類別,子目錄中的圖像是RGB格式,但我只對綠色通道感興趣。我讀使用flow_from_directory函數圖像的批次(影像尺寸@(3224224)),那麼我想如下提取使用lambda層綠色通道:
def get_model_bw(input_shape=(3,224,224), classes = 2, lr=1e-4):
model = Sequential([
Lambda(lambda x: x[:,1,:,:], input_shape=input_shape, output_shape=(1,224,224)),
BatchNormalization(axis=1),
Conv2D(32,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(32,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(32,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
MaxPooling2D(),
Conv2D(64,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(64,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(64,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
MaxPooling2D(),
Conv2D(128,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(128,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
MaxPooling2D(),
Conv2D(256,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(256,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
MaxPooling2D(),
Conv2D(512,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
Conv2D(512,(3,3), activation='relu',padding='same'),
BatchNormalization(axis=1),
MaxPooling2D(),
Flatten(),
Dense(1000, activation='relu'),
BatchNormalization(),
Dense(1000, activation='relu'),
BatchNormalization(),
Dense(classes, activation='softmax')
])
model.compile(Adam(lr=lr), loss='categorical_crossentropy', metrics=['accuracy'])
return model
model_bw = get_model_bw(input_shape=(3,224,224), classes=2)
但它只是拒絕工作...... ,它的投擲的錯誤是:
ValueError異常回溯(最近通話最後一個) ValueError異常:輸入0與層batch_normalization_181不相容:預計NDIM = 4,發現NDIM = 3
有什麼建議? P.S.我使用Theano後端和最新的keras版本。
任何幫助將不勝感激。
請以「拒絕工作」給你的意思的細節。包括可能的錯誤消息。 –
您必須發佈錯誤消息,以便人們可以瞭解正在發生的事情。 –
謝謝,我添加了錯誤信息。 –