Keras mobilenet实施

时间:2018-06-03 18:23:12

标签: machine-learning neural-network keras deep-learning conv-neural-network

我想将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与herehere中的分辨率乘数相同:“depth_multiplier:深度卷积的深度乘数(也称为分辨率乘数)”

2 个答案:

答案 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