我想将mobilenet与depth_multiplier(或分辨率乘数)的不同值一起使用。这两行代码给出了以下错误。知道这里出了什么问题吗?
from keras.applications.mobilenet import MobileNet
basic_model = MobileNet(alpha=0.25, depth_multiplier=0.25, weights=None)
错误:
追踪(最近一次呼叫最后一次):
文件“C:/Users/Pedro/Desktop/Work/Smile/files/CVPR_2016_SMILES_DATA/test.py”,第2行,in basic_model = MobileNet(alpha = 0.25,depth_multiplier = 0.25,weights = None)
MobileNet中的文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ applications \ mobilenet.py”,第456行 x = _depthwise_conv_block(x,64,alpha,depth_multiplier,block_id = 1)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ applications \ mobilenet.py”,第654行,在_depthwise_conv_block中 name ='conv_dw_%d'%block_id)(输入)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ engine \ topology.py”,第576行,调用 self.build(input_shapes [0])
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ applications \ mobilenet.py”,第228行,构建约束= self.depthwise_constraint)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ legacy \ interfaces.py”,第87行,在包装返回函数中(* args,** kwargs)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ engine \ topology.py”,第397行,add_weight weight = K.variable(initializer(shape),
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ initializers.py”,第212行,调用 dtype = dtype,seed = self.seed)< / p>
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ backend \ tensorflow_backend.py”,第3627行,in random_uniform dtype = dtype,seed = seed)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ ops \ random_ops.py”,第240行,为random_uniform形状,dtype,seed = seed1,seed2 = seed2)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ ops \ gen_random_ops.py”,第247行,_random_uniform seed = seed,seed2 = seed2,name = name)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ op_def_library.py”, 第589行,在apply_op param_name = input_name)
文件“C:\ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ framework \ op_def_library.py”, 第60行,在_SatisfiesTypeConstraint中 “,”。join(允许列表中的x的dtypes.as_dtype(x).name)))
TypeError:传递给参数'shape'的值没有DataType float32 在允许值列表中:int32,int64
来自mobilent paper:“第二个用于降低神经网络计算成本的超参数是分辨率乘数ρ。我们将其应用于输入图像,每个层的内部表示随后通过在实践中,我们通过设置输入分辨率隐式设置ρ。我们现在可以将网络核心层的计算成本表示为具有宽度乘数α和分辨率乘数ρ的深度可分离卷积: DK·DK·αM·ρDF·ρDF+αM·αN·ρDF·ρDF(7) 其中ρ∈(0,1)通常是隐式设置的,因此网络的输入分辨率为224,192,160或128.ρ= 1是基线MobileNet,ρ&lt; 1是减少计算的MobileNets。分辨率乘数有计算成本降低ρ^ 2的效果。“
Keras声称depth_multiplier与here和here中的分辨率乘数相同:“depth_multiplier:深度卷积的深度乘数(也称为分辨率乘数)”
答案 0 :(得分:0)
答案在追溯电话的底部。
它需要一个整数,例如25(不带小数点的数字)而不是浮点数,例如0.25
depth_multiplier:深度卷积输出通道的数量 对于每个输入通道。 深度卷积输出的总数 渠道将等于
filters_in * depth_multiplier
。
参考:https://github.com/fchollet/deep-learning-models/blob/master/mobilenet.py
答案 1 :(得分:0)
它似乎只是错误的命名而且它们不一样。您可以阅读更多here