def FfD(img_channels=1, img_rows=64, img_cols=64): input_img = Input(shape=(img_channels, img_rows, img_cols)) x = Convolution2D(30, 5, 5, init='normal', activation='tanh')(input_img) x = ZeroPadding2D((2,2))(x) x = Convolution2D(30, 5, 5, init='normal', activation='tanh')(x) x = ZeroPadding2D((2,2))(x) x = MaxPooling2D((2,2))(x) x = Convolution2D(60, 4, 4, init='normal', activation='tanh')(x) x = Convolution2D(60, 3, 3, init='normal', activation='tanh')(x) x = Convolution2D(120, 3, 3, init='normal', activation='tanh')(x) x = Convolution2D(120, 3, 3, init='normal', activation='tanh')(x) encoded = Convolution2D(256, 1, 1, init='normal', activation='tanh')(x) x = Convolution2D(256, 1, 1, init='normal', activation='tanh')(encoded) x = Convolution2D(120, 3, 3, init='normal', activation='tanh')(x) x = Convolution2D(120, 3, 3, init='normal', activation='tanh')(x) x = Convolution2D(60, 3, 3, init='normal', activation='tanh')(x) x = Convolution2D(60, 4, 4, init='normal', activation='tanh')(x) x = UpSampling2D((2, 2))(x) x = Convolution2D(30, 5, 5, init='normal', activation='tanh')(x) x = Convolution2D(30, 5, 5, init='normal', activation='tanh')(x) x = Flatten()(x) decoded = Dense(img_channels * img_rows * img_cols, activation='tanh')(x) decoded = Reshape((img_channels, img_rows, img_cols))(decoded) FfD = Model(input_img, decoded) return FfD