我想对depth_multiplier(或分辨率倍增器)使用不同值的mobilenet。这两行代码给出了以下错误。你知道这里出了什么问题吗?
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行,在basic_model = MobileNet(alpha=0.25,depth_multiplier=0.25,weights=None)中
文件"C:\Users\Pedro\Anaconda3\lib\site-packages\keras\applications\mobilenet.py",行456,in MobileNet x= _depthwise_conv_block(x,64,alpha,depth_multiplier,block_id=1)
文件名654行,输入名称=‘_depthwise_conv_block _dw_%d’%block_id)(输入)
文件"C:\Users\Pedro\Anaconda3\lib\site-packages\keras\engine\topology.py",第576行,位于内部版本号中的call self.build(input_shapes)文件第228行)
文件"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,在形状权重=K.variable(initializer( "C:\Users\Pedro\Anaconda3\lib\site-packages\keras\initializers.py",),文件add_weight行212,在中调用 dtype=dtype,seed=self.seed)文件"C:\Users\Pedro\Anaconda3\lib\site-packages\tensorflow\python\ops\random_ops.py",行3627,in random_uniform dtype=dtype,seed=seed)文件"C:\Users\Pedro\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py",行240,in random_uniform shape,dtype,seed=seed1,seed2=seed2)文件shape行247,in _random_uniform seed=seed,seed2=seed2,name=name)文件行589,in apply_op param_name=input_name)文件行60,in _SatisfiesTypeConstraint ",".join(dtypes.as_dtype(x).name name=name x in .join)
TypeError:传递给参数‘float32’的值的DataType形状不在允许值列表中: int32,int64
来自mobilent paper:“降低神经网络计算成本的第二个超参数是分辨率乘法器ρ。我们将其应用于输入图像,随后将每个层的内部表示减少相同的乘数。实际上,我们通过设置输入分辨率来隐式设置ρ。现在,我们可以将网络核心层的计算成本表示为具有宽度乘数α和分辨率乘数ρ的深度可分离卷积: DK·DK·αM·ρDF·ρDF +αM·αN·ρDF·ρDF (7)其中ρ∈(0,1]通常是隐式设置的,因此网络的输入分辨率为224、192、160或128。ρ=1是基线MobileNet,ρ<1是减少的计算量。分辨率乘法器具有将计算成本降低ρ^2的效果。
Keras声称depth_multiplier与here和here中的分辨率倍增器是相同的:"depth_multiplier:深度卷积的深度倍增器(也称为分辨率倍增器)“。
发布于 2018-06-08 14:13:59
这似乎只是一个糟糕的名字,他们是不一样的。你可以阅读更多here
发布于 2018-06-04 02:36:15
答案在回溯调用的底部。
它需要一个整数,例如25 (一个没有小数点的数字),而不是一个浮点数,例如0.25
depth_multiplier:每个输入通道的深度卷积输出通道数。深度卷积输出通道的总数将等于
filters_in * depth_multiplier
。
参考:https://github.com/fchollet/deep-learning-models/blob/master/mobilenet.py
https://stackoverflow.com/questions/50669611
复制相似问题