Keras mobilenet实现

我想使用不同的深度乘数(或分辨率乘数)值来使用mobilenet。以下两行代码给我带来了以下错误。您知道这里出了什么问题吗?

from keras.applications.mobilenet import MobileNetbasic_model = MobileNet(alpha=0.25, depth_multiplier=0.25, weights=None)

错误:

Traceback (most recent call last):

File “C:/Users/Pedro/Desktop/Work/Smile/files/CVPR_2016_SMILES_DATA/test.py”, line 2, in basic_model = MobileNet(alpha=0.25, depth_multiplier=0.25, weights=None)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\applications\mobilenet.py”, line 456, in MobileNet x = _depthwise_conv_block(x, 64, alpha, depth_multiplier, block_id=1)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\applications\mobilenet.py”, line 654, in _depthwise_conv_block name=’conv_dw_%d’ % block_id)(inputs)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\engine\topology.py”, line 576, in call self.build(input_shapes[0])

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\applications\mobilenet.py”, line 228, in build constraint=self.depthwise_constraint)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\legacy\interfaces.py”, line 87, in wrapper return func(*args, **kwargs)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\engine\topology.py”, line 397, in add_weight weight = K.variable(initializer(shape),

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\initializers.py”, line 212, in call dtype=dtype, seed=self.seed)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py”, line 3627, in random_uniform dtype=dtype, seed=seed)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\tensorflow\python\ops\random_ops.py”, line 240, in random_uniform shape, dtype, seed=seed1, seed2=seed2)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\tensorflow\python\ops\gen_random_ops.py”, line 247, in _random_uniform seed=seed, seed2=seed2, name=name)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py”, line 589, in apply_op param_name=input_name)

File “C:\Users\Pedro\Anaconda3\lib\site-packages\tensorflow\python\framework\op_def_library.py”, line 60, in _SatisfiesTypeConstraint “, “.join(dtypes.as_dtype(x).name for x in allowed_list)))

TypeError: Value passed to parameter ‘shape’ has DataType float32 not in list of allowed values: int32, int64

根据mobilenet论文:“减少神经网络计算成本的第二个超参数是分辨率乘数ρ。我们将其应用于输入图像,并且每一层的内部表示也相应地减少相同的乘数。在实践中,我们通过设置输入分辨率来隐式设置ρ。现在我们可以将我们网络的核心层的计算成本表示为具有宽度乘数α和分辨率乘数ρ的深度可分离卷积:DK · DK · αM · ρDF · ρDF + αM · αN · ρDF · ρDF (7)其中ρ ∈ (0, 1],通常隐式设置为网络的输入分辨率为224, 192, 160或128。ρ = 1是基准MobileNet,而ρ < 1是减少计算的MobileNets。分辨率乘数的效果是通过ρ^2减少计算成本。”

而Keras声称深度乘数与分辨率乘数相同,参见这里这里:“depth_multiplier: 深度卷积的深度乘数(也称为分辨率乘数)”


回答:

看起来这只是命名不当,它们并不是相同的。您可以在这里阅读更多

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注