我在Keras中邁出第一步,掙扎着圖層的尺寸。我目前正在構建一個我想用MNIST數據集進行訓練的卷積自動編碼器。不幸的是,我似乎無法得到正確的維度,而且我很難理解我的錯誤在哪裏。構建卷積自動編碼器時的尺寸錯誤
我的模式是建立通過:
def build_model(nb_filters=32, nb_pool=2, nb_conv=3):
input_img = Input(shape=(1, 28, 28))
x = Convolution2D(16, 3, 3, activation='relu', border_mode='same')(input_img)
x = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
x = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
encoded = MaxPooling2D((2, 2), border_mode='same')(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(encoded)
x = UpSampling2D((2, 2))(x)
x = Convolution2D(8, 3, 3, activation='relu', border_mode='same')(x)
x = UpSampling2D((2, 2))(x)
x = Convolution2D(16, 3, 3, activation='relu', border_mode='same')(x)
x = UpSampling2D((2, 2))(x)
decoded = Convolution2D(1, 3, 3, activation='sigmoid', border_mode='same')(x)
return Model(input_img, decoded)
和數據使用檢索:
def load_data():
(x_train, _), (x_test, _) = mnist.load_data()
x_train = x_train.astype('float32')/255.
x_test = x_test.astype('float32')/255.
x_train = np.reshape(x_train, (len(x_train), 1, 28, 28))
x_test = np.reshape(x_test, (len(x_test), 1, 28, 28))
return x_train, x_test
正如你看到的,我想正常化圖像的黑白顯示它們,並簡單地訓練自動編碼器以便能夠恢復它們。
下面你可以看到,我發現了錯誤:
回溯(最近通話最後一個):文件 「C:/用戶//文件/ GitHub上/主/科研/ research_framework /實驗。 PY」, 線46,在 回調= [EarlyStopping(耐性= 3)])文件 「C:\用戶\應用程序數據\本地\連續\ Anaconda2 \ lib中\站點包\ keras \發動機\ training.py」,文件「C:\ Users \ AppData \ Local \ Continuum \ Anaconda2 \ lib \ site-packages \ keras \ engine \ training.py」, line 978,in _standardize_user_data exception_prefix ='模型目標的)文件 「C:\用戶\應用程序數據\本地\連續\ Anaconda2 \ lib中\站點包\ keras \發動機\ training.py」, 線111,在standardize_input_data STR(array.shape) )異常:檢查模型目標時出錯:期望的convolution2d_7具有形狀(無,8,32,1),但獲得具有形狀(60000L,1L,28L,28L)的陣列 總參數:8273
處理完成退出代碼1
你能幫我解決這個錯誤嗎?除了Keras網站之外,有沒有關於建立模型和處理這類問題的材料?
乾杯