我正在尝试编写一个自动编码器在TensorFlow (v 1.14.0). 我想将kernel_initializer
设置为Xavier初始化. 然而,当我在代码中调用tf.contrib.layers.conv2d()
时:
Conv = layers.conv2d(
inputs=X,
num_outputs=64,
kernel_size=5,
stride=[2,1],
activation_fn=tf.nn.relu,
kernel_initializer=tf.contrib.layers.xavier_initializer()
)
我在参数kernel_initializer
中得到以下错误:
File "/data/my_new_env37/lib/python3.7/sitepackages/tensorflow/contrib/framework/python/ops/arg_scope.py", line 182, in func_with_args
return func(*args, **current_args)
TypeError: convolution2d() got an unexpected keyword argument kernel_initializer
如果没有kernel_initializer
参数,代码可以正常工作。这个错误意味着什么?如何解决这个问题?
首先,我不习惯Tensorflow v1.14.0,但是我从文档中看到的是kernel_initializer
关键字不被apitf.contrib.layers.conv2d
接受,这里是api文档的链接。
但是您仍然可以使用conv2d
的其他API,即tf.layers.Conv2D
,这里是相同的文档。这个API提供了提供kernel_initializer
的选项。
因为我不习惯Tensorflow v1.14.0,所以我将无法提供这两个API之间的实际差异。但是我会给这个API一个尝试。