我在帶有tensorflow后端的keras中有一個工作的python代碼。我正在利用從VGG16進行的轉(zhuǎn)移學習。一切都很好。我想使用mxnet后端,但是有一些問題:from keras.preprocessing.image import ImageDataGeneratorfrom keras import applicationsfrom helper import target_size, batch_sizefrom math import ceilimport numpy as npdatagen = ImageDataGenerator(rescale=1./255)加載vgg16模型,不包括最上面的全連接層model = applications.VGG16(include_top=False, weights='imagenet' , input_shape=(224, 224 , 3))上面的代碼(shape(224,224,3))給出:ValueError:輸入必須具有3個通道。得到了input_shape=(224, 224, 3)如果我使用:shape(3,224,24)'變量%s的重新定義'%self.name斷言錯誤:重新定義了變量block1_conv1 / kernel1如何在工作代碼中正確使用mxnet而不是tensorflow后端?注意:keras.json:{"epsilon": 1e-07, "floatx": "float32", "image_data_format": "channels_first", "backend": "mxnet"}當我將后端從tensorflow更改為mxnet時,keras是否需要重新下載mxnet的vgg16模型?
1 回答

ITMISS
TA貢獻1871條經(jīng)驗 獲得超8個贊
解決方案:
將data_format設(shè)置為“ channels_last”。
細節(jié):
VGG16 imagenet權(quán)重采用“ channels_last”格式。您應(yīng)該將keras配置設(shè)置為'channels_last'以使其與MXNet后端一起使用。
我們遇到了Github問題,正在努力使MXNet后端以不同的data_format加載其他經(jīng)過后端訓練的權(quán)重。即,假設(shè)您有一個經(jīng)過TFs后端訓練的模型,該模型是使用channels_last格式訓練的。如果您嘗試在data_format設(shè)置為'channels_first'的情況下將其加載到MXNet后端中,則不會自動從channels_last轉(zhuǎn)換為channels_first。
問題原因:
當使用channels_last格式調(diào)用圖層時,MXNet后端會轉(zhuǎn)換Conv圖層的輸入和內(nèi)核,以加快速度。并且,這將導致未訓練的其他后端模型權(quán)重的問題。我們正在修復它并啟用該功能。
添加回答
舉報
0/150
提交
取消