python - 首先使用 Keras 进行 channel ?

标签 python tensorflow keras shapes

我正在尝试将我的 keras 模型与 keras-to-caffe 转换脚本一起使用;每当我尝试运行脚本时,它都会加载我的模型,然后给我一个错误,提示“仅支持 channel 优先”。我正在用形状 (24,24,3) 喂养我的模型图像 - 但它想要 (3,24,24)。

每当我尝试在形状 (3,24,24) 的图像上训练我的模型时,我都会收到此错误(它认为我给它提供了一个具有 24 个 channel 的 3x24 图像,我相信);

ValueError: Negative dimension size caused by subtracting 3 from 1 for 'conv2d_2/convolution' (op: 'Conv2D') with input shapes: [?,1,22,32], [3,3,32,64].

如何提供我的 keras 模型 channel 优先图像?

(万一有人需要它的模型代码:我只是在做一个简单的分类问题)

input_1 = Input(shape=input_shape) # input shape is 24,24,3 - needs to be 3,24,24


conv_1 = Conv2D(32, kernel_size=(3, 3),
             activation='relu',
             input_shape=input_shape)(input_1)

conv_2 = Conv2D(64, (3, 3), activation='relu')(conv_1)

pool_1 = MaxPooling2D(pool_size=(2, 2))(conv_2)

drop_1 = Dropout(0.25)(pool_1)

flatten_1 = Flatten()(drop_1)

dense_1 = Dense(128, activation='relu')(flatten_1)

drop_2 = Dropout(0.5)(dense_1)

dense_2 = Dense(128, activation='relu')(drop_2)

drop_3 = Dropout(0.5)(dense_2)

dense_3 = Dense(num_classes, activation='softmax')(drop_3)

model = Model(inputs=input_1, outputs=dense_3)

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])

model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=epochs,
          validation_data=(x_test, y_test),
          verbose=1)

最佳答案

每个卷积层都接受参数 data_format='channels_first'

您还可以找到您的 keras.json 文件(在 <yourUserFolder>/.keras 中)并将其设置为默认配置。

编辑:@Gal 的评论是一个非常有趣的观点。如果您打算使用多台计算机,最好在代码中设置配置:keras.backend.set_image_data_format('channels_first')

关于python - 首先使用 Keras 进行 channel ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965047/

相关文章:

python - 将 ImageDataGenerator 结果分配给 Numpy 数组

python - 火车功能内部和外部的结果不同

python - 带有膨胀和 "VALID"填充的 tf.conv3d 尺寸不一致

python - 在 selenium python 中找到一个 a 元素并单击它

python - 如何对齐 tkinter 小部件?

python - 导入不在路径上的python模块

tensorflow - 使用 keras 和 tensorflow 作为后端在 aws sagemaker 中配置 GPU

python - 如何在 keras 中实现损失函数的 ssim?

tensorflow - 卷积神经网络似乎在随机猜测

python - 从两个二维列表中提取值并将它们存储到 panda 数据框中