Keras初始值设定项错误意外的关键字参数“dtype”

2024-05-15 03:56:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Keras和Tensorflow编写一个暹罗网络代码,使用这个Jupiter笔记本作为参考: https://github.com/hlamba28/One-Shot-Learning-with-Siamese-Networks/blob/master/Siamese%20on%20Omniglot%20Dataset.ipynb

创建模型时:

model = get_siamese_model((105, 105, 1))

我得到了这个错误:

 Traceback (most recent call last):
  File "main.py", line 164, in <module>
    model = get_siamese_model((105, 105, 1))
  File "main.py", line 129, in get_siamese_model
    kernel_initializer=initialize_weights, kernel_regularizer=l2(2e-4)))
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/training/tracking/base.py", line 456, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/sequential.py", line 198, in add
    layer(x)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 897, in __call__
    self._maybe_build(inputs)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 2416, in _maybe_build
    self.build(input_shapes)  # pylint:disable=not-callable
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/layers/convolutional.py", line 163, in build
    dtype=self.dtype)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 577, in add_weight
    caching_device=caching_device)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/training/tracking/base.py", line 743, in _add_variable_with_custom_getter
    **kwargs_for_getter)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer_utils.py", line 141, in make_variable
    shape=variable_shape if variable_shape else None)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 259, in __call__
    return cls._variable_v1_call(*args, **kwargs)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 220, in _variable_v1_call
    shape=shape)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 198, in <lambda>
    previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 2598, in default_variable_creator
    shape=shape)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 263, in __call__
    return super(VariableMetaclass, cls).__call__(*args, **kwargs)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 1434, in __init__
    distribute_strategy=distribute_strategy)
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 1567, in _init_from_args
    initial_value() if init_from_fn else initial_value,
  File "/home/fabio/.local/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer_utils.py", line 121, in <lambda>
    init_val = lambda: initializer(shape, dtype=dtype)
TypeError: initialize_weights() got an unexpected keyword argument 'dtype'

错误意味着什么?我该如何解决这个问题


Tags: inpyhomelibpackageslocaltensorflowline
2条回答

出于某种原因,这将调用v2 tf.keras初始值设定项,而不是compat.v1初始值设定项。您正在使用v1 tensorflow,但试图从v2调用关键字。要解决此问题,请按照以下链接中迁移到tensor flow V2的步骤进行操作

https://www.tensorflow.org/guide/migrate

Keras内部调用提供的initializer,如下所示

weight = K.variable(initializer(shape, dtype=dtype), dtype=dtype, ......

如您所见,自定义initializer的第二个参数应该是dtype而不是name

修复

def initialize_weights(shape, dtype=None):
  return np.random.normal(loc = 0.0, scale = 1e-2, size = shape)

def initialize_bias(shape, dtype=None):
  return np.random.normal(loc = 0.5, scale = 1e-2, size = shape)

现在

model = get_siamese_model((105, 105, 1))
model.summary()

将成功地构建模型

输出

__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_7 (InputLayer)            (None, 105, 105, 1)  0                                            
__________________________________________________________________________________________________
input_8 (InputLayer)            (None, 105, 105, 1)  0                                            
__________________________________________________________________________________________________
sequential_4 (Sequential)       (None, 4096)         38947648    input_7[0][0]                    
                                                                 input_8[0][0]                    
__________________________________________________________________________________________________
lambda_2 (Lambda)               (None, 4096)         0           sequential_4[1][0]               
                                                                 sequential_4[2][0]               
__________________________________________________________________________________________________
dense_4 (Dense)                 (None, 1)            4097        lambda_2[0][0]                   
==================================================================================================
Total params: 38,951,745
Trainable params: 38,951,745
Non-trainable params: 0
_________________________

相关问题 更多 >

    热门问题