Я хочу использовать mobilenet с разными значениями для depth_multiplier (или множителя разрешения). Эти две строки кода дают мне следующую ошибку. Любая идея, что здесь происходит неправильно?
from keras.applications.mobilenet import MobileNet
basic_model = MobileNet(alpha=0.25, depth_multiplier=0.25, weights=None)
Ошибка:
Traceback (последний последний вызов):
Файл «C: /Users/Pedro/Desktop/Work/Smile/files/CVPR_2016_SMILES_DATA/test.py», строка 2, inbasic_model = MobileNet (alpha = 0.25, depth_multiplier = 0.25, weight = None)
Файл «C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ applications \ mobilenet.py», строка 456, в MobileNetx = _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_blockname = '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, в build constraint = self.depthwise_constraint)
Файл «C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ legacy \ interfaces.py», строка 87, в w rapper return func (args,kwargs)
Файл «C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ engine \ topology.py», строка 397, в весе add_weight = K.variable (инициализатор (форма),
Файл «C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ initializers.py», строка 212, в вызов dtype = dtype, seed = self.seed)
Файл «C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ keras \ backend \ tensorflow_backend.py», строка 3627, в random_uniform dtype = dtype, seed = seed)
Файл «C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ tensorflow \ python \ ops \ random_ops.py», строка 240, в случайной форме , 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 , in apply_op param_name = имя_узла)
Файл"C: \ Users \ Pedro \ Anaconda3 \ lib \ site-packages \ tensorflow \ pytho n \ framework \ op_def_library.py", строка 60, в _SatisfiesTypeConstraint",".join (dtypes.as_dtype (x) .name для x в разрешенном_ списке)))
TypeError: значение передано в форму параметра 'имеет DataType float32 notin список допустимых значений: int32, int64
Из мобилизуемой бумаги: «Второй гиперпараметр для уменьшения вычислительной стоимости нейронной сети является мультипликатором разрешения». Мы применяем это к входному изображению, а внутреннее представление каждого слоя впоследствии уменьшается на тот же множитель. На практике мы неявно устанавливаем? путем установки разрешения ввода. Теперь мы можем выразить вычислительную стоимость для основных слоев нашей сети как глубинные разделимые свертки с умножителем ширины? и множитель разрешения?: DK? DK Ã ?? Â ?? Ã ?? Â ·? M Ã ?? Â ?? Ã ?? Â ·? DF Ã ?? Â ?? Ã ?? Â ·? DF +? M Ã ?? Â ?? Ã Â ·? N Ã ?? Â ?? Ã? Â ·? DF Ã ?? Â ?? Ã? Â ·? DF (7) где? ? (0, 1), который обычно устанавливается неявно, так что входное разрешение сети равно 224, 192, 160 или 128. & nbsp; = 1 является базовой сетью MobileNet, а & lt; 1 - уменьшенными вычислениями MobileNets. Множитель разрешени оказывает влияние уменьшая вычислительные затраты на? ^ 2.
И Keras утверждал, что depth_умножитель такой же, как и множитель разрешения здесь и здесь: «depth_умножитель: множитель глубины для глубинной свертки (также называемый множителем разрешения)»
Ответ находится внизу вызова трассировки.
Он ожидает целое число, например, 25 (число без десятичной точки), а не float, например. 0.25
Ссылка: https://github.com/fchollet/deep-learning-models/blob/master/mobilenet.py
Кажется, это просто плохое имя, и они не то же самое. Вы можете прочитать здесь больше