我试图用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'
错误意味着什么?我该如何解决这个问题
出于某种原因,这将调用v2 tf.keras初始值设定项,而不是compat.v1初始值设定项。您正在使用v1 tensorflow,但试图从v2调用关键字。要解决此问题,请按照以下链接中迁移到tensor flow V2的步骤进行操作
https://www.tensorflow.org/guide/migrate
Keras内部调用提供的
initializer
,如下所示如您所见,自定义
initializer
的第二个参数应该是dtype
而不是name
修复
现在
将成功地构建模型
输出
相关问题 更多 >
编程相关推荐