为了账号安全,请及时绑定邮箱和手机立即绑定

如何将keras张量流转换为keras mxnet

如何将keras张量流转换为keras mxnet

富国沪深 2021-05-14 15:11:20
我在带有tensorflow后端的keras中有一个工作的python代码。我正在利用从VGG16进行的转移学习。一切都很好。我想使用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条经验 获得超8个赞

解决方案:

将data_format设置为“ channels_last”。

细节:

VGG16 imagenet权重采用“ channels_last”格式。您应该将keras配置设置为'channels_last'以使其与MXNet后端一起使用。

我们遇到了Github问题,正在努力使MXNet后端以不同的data_format加载其他经过后端训练的权重。即,假设您有一个经过TFs后端训练的模型,该模型是使用channels_last格式训练的。如果您尝试在data_format设置为'channels_first'的情况下将其加载到MXNet后端中,则不会自动从channels_last转换为channels_first。

问题原因:

当使用channels_last格式调用图层时,MXNet后端会转换Conv图层的输入和内核,以加快速度。并且,这将导致未训练的其他后端模型权重的问题。我们正在修复它并启用该功能。



查看完整回答
反对 回复 2021-05-18
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信