Fab*_*Dev 1 python keras tensorflow
我正在尝试在 Keras 和 Tensorflow 中编写 Siamese 网络,使用此 Jupiter Notebook 作为参考: https://github.com/hlamba28/One-Shot-Learning-with-Siamese-Networks/blob/master/Siamese%20on% 20Omniglot%20Dataset.ipynb
当我创建模型时:
model = get_siamese_model((105, 105, 1))
Run Code Online (Sandbox Code Playgroud)
我收到这个错误:
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'
Run Code Online (Sandbox Code Playgroud)
错误是什么意思?我该如何解决这个问题?
Keras 内部调用initializer如下提供的
weight = K.variable(initializer(shape, dtype=dtype), dtype=dtype, ......
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,您的自定义的第二个参数不initializer应该是dtypename
使固定
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)
Run Code Online (Sandbox Code Playgroud)
现在
model = get_siamese_model((105, 105, 1))
model.summary()
Run Code Online (Sandbox Code Playgroud)
将成功构建模型
输出
__________________________________________________________________________________________________
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
_________________________
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7248 次 |
| 最近记录: |