【问题标题】:TypeError: zeros_initializer() takes at least 1 argument (0 given)TypeError: zeros_initializer() 至少需要 1 个参数(给定 0)
【发布时间】:2017-04-27 17:17:06
【问题描述】:

我正在尝试从 Tensorflow 运行初始示例: https://github.com/tensorflow/models/tree/master/inception

但是,我收到了这个错误:

TypeError: zeros_initializer() 至少需要 1 个参数(给定 0)

当我寻找解决方案时,主要有两个:
1.将zeros_initializer&ones_initializer改成zeros_initializer()&ones_initializer(),但是已经是这样了。

2. 将 Tensorflow 升级到最新版本,我这样做了:
sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.1.0-cp27-none-linux_x86_64.whl

然后我使用以下命令升级文件:
tf_upgrade.py --infile foo.py --outfile foo-upgraded.py

以上都不起作用。

注意事项:
我通过以下命令检查了我的 TF 版本:
python -c 'import tensorflow as tf; print(tf.__version__)'
给出了这个结果:

0.12.1

我也尝试从函数中取出括号,但它不起作用并给出了不同的错误

TypeError:ones_initializer() 为关键字参数 'dtype' 获取了多个值

更新
1.这是有问题的代码 https://github.com/tensorflow/models/blob/master/inception/inception/slim/ops.py
2. 这里的主题讨论了同样的问题(Error thrown in Google's Inception-v3 fine-tuning script),但我使用以下方法检查了我的 slim 版本:

python -c "import tensorflow.contrib.slim as slim; eval = slim.evaluation.evaluate_once"python -c "from nets import cifarnet; mynet = cifarnet.cifarnet"

都运行没有错误

【问题讨论】:

  • 你确定它不是在寻找调用对象(self)?
  • @MHornbacher 我不这么认为,我使用的是代表的确切代码。这似乎对大多数人都有效。
  • 你能把代码贴出来让人们看到和测试吗?

标签: python tensorflow


【解决方案1】:

问题是代码使用了initializer=tf.zeros_initializer()。但正如您所见,tf.zeros_initializer() 有一个必需属性 shape,您的示例未提供该属性。

我假设在以前的版本中不需要这个参数。你有两个选择:

  • 找到形状并正确传递
  • 改成tf.constant_initializer(0.0)(没测试是否有效)

【讨论】:

  • 我不确定我能否找到该形状。我尝试了第二种方法并得到了这个错误:“TypeError: Expected int32, got list contains Tensors of type '_Message' 相反。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多