如何将 keras tensorflow 转换为 keras mxnet
How to convert keras tensorflow to keras mxnet
我在带有 tensorflow 后端的 keras 中有一个有效的 python 代码。我正在利用 VGG16 的迁移学习。一切都很好。
我想使用 mxnet 后端,但遇到了一些问题:
from keras.preprocessing.image import ImageDataGenerator
from keras import applications
from helper import target_size, batch_size
from math import ceil
import numpy as np
datagen = ImageDataGenerator(rescale=1./255)
loading vgg16 model, excluding the top fully connected layers
model = applications.VGG16(include_top=False, weights='imagenet' , input_shape=(224, 224 , 3))
以上代码 (shape(224,224,3)) 给出:
ValueError: The input must have 3 channels; got input_shape=(224, 224, 3)
如果我使用:shape(3,224,24)
'Redefinition of variable %s' % self.name
AssertionError: Redefinition of variable block1_conv1/kernel1
如何在工作代码中正确使用 mxnet 而不是 tensorflow 后端?
注:keras.json:
{
"epsilon": 1e-07,
"floatx": "float32",
"image_data_format": "channels_first",
"backend": "mxnet"
}
编辑 1
当我将后端从 tensorflow 更改为 mxnet 时,keras 是否需要为 mxnet 重新下载 vgg16 模型?
解决方案:
将 data_format 设置为 'channels_last'。
详情:
VGG16 图像网络权重采用 'channels_last' 格式。您应该将 keras 配置设置为 'channels_last' 以使其与 MXNet 后端一起使用。
我们有一个 Github 问题,正在努力让 MXNet 后端加载不同 data_format 中的其他后端训练权重。即,假设您有一个使用 channels_last 格式训练的 TF 后端训练模型。如果您尝试在 data_format 设置为 'channels_first' 的 MXNet 后端加载它,则不会发生从 channels_last 到 channels_first 的自动转换。
问题原因:
MXNet 后端在以 channels_last 格式调用层时转置 Conv 层输入和内核以加速。而且,这将导致预训练的其他未转置的后端模型权重出现问题。我们正在努力修复它并启用该功能。
我在带有 tensorflow 后端的 keras 中有一个有效的 python 代码。我正在利用 VGG16 的迁移学习。一切都很好。
我想使用 mxnet 后端,但遇到了一些问题:
from keras.preprocessing.image import ImageDataGenerator
from keras import applications
from helper import target_size, batch_size
from math import ceil
import numpy as np
datagen = ImageDataGenerator(rescale=1./255)
loading vgg16 model, excluding the top fully connected layers
model = applications.VGG16(include_top=False, weights='imagenet' , input_shape=(224, 224 , 3))
以上代码 (shape(224,224,3)) 给出:
ValueError: The input must have 3 channels; got
input_shape=(224, 224, 3)
如果我使用:shape(3,224,24)
'Redefinition of variable %s' % self.name AssertionError: Redefinition of variable block1_conv1/kernel1
如何在工作代码中正确使用 mxnet 而不是 tensorflow 后端?
注:keras.json:
{
"epsilon": 1e-07,
"floatx": "float32",
"image_data_format": "channels_first",
"backend": "mxnet"
}
编辑 1
当我将后端从 tensorflow 更改为 mxnet 时,keras 是否需要为 mxnet 重新下载 vgg16 模型?
解决方案:
将 data_format 设置为 'channels_last'。
详情:
VGG16 图像网络权重采用 'channels_last' 格式。您应该将 keras 配置设置为 'channels_last' 以使其与 MXNet 后端一起使用。
我们有一个 Github 问题,正在努力让 MXNet 后端加载不同 data_format 中的其他后端训练权重。即,假设您有一个使用 channels_last 格式训练的 TF 后端训练模型。如果您尝试在 data_format 设置为 'channels_first' 的 MXNet 后端加载它,则不会发生从 channels_last 到 channels_first 的自动转换。
问题原因:
MXNet 后端在以 channels_last 格式调用层时转置 Conv 层输入和内核以加速。而且,这将导致预训练的其他未转置的后端模型权重出现问题。我们正在努力修复它并启用该功能。