python - 手写数字分类教程有错误/缺失属性

标签 python tensorflow

我正在学习 Classifying Handwritten Digits with TF.Learn 的教程

教程的最后一部分是我遇到问题的地方。好像 classifier.weights_ 不存在了。

这是错误消息:AttributeError: 'LinearClassifier' object has no attribute 'weights_'

weights = classifier.weights_
f, axes = plt.subplots(2, 5, figsize=(10,4))
axes = axes.reshape(-1)
for i in range(len(axes)):
    a = axes[i]
    a.imshow(weights.T[i].reshape(28, 28), cmap=plt.cm.seismic)
    a.set_title(i)
    a.set_xticks(()) # ticks be gone
    a.set_yticks(())
plt.show()

最佳答案

TensorFlow 在过去几年里变化非常快,任何使用 1.0 之前版本的东西都可能已经过时。 LinearClassifier.weights_ 属性已被删除,似乎没有与之完全匹配的属性。您可以做的是请求变量列表,然后将您想要的变量传递给 weights。为此,请使用

for var in classifier.get_variable_names():
    print("var:", var, "=", classifier.get_variable_value(var))

在我的例子中,这给了我三个权重变量,分别命名为“linear//weight”、“linear//weight/d/linear//weight/part_0/Ftrl”和“linear//weight/d/linear//” weight/part_0/Ftrl_1”,以及其他一些东西。这些张量非常大,因此它们的值仅以缩写形式显示。然后你可以将其中之一传递给 weights:

weights = classifier.get_variable_value("linear//weight/d/linear//weight/part_0/Ftrl_1")

您应该会看到类似于教程中图片的内容。它们三个都很相似但又不一样,所以 LinearClassifier 可能正在做一些比以前更复杂的事情。

关于python - 手写数字分类教程有错误/缺失属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47425746/

相关文章:

python - 更新mongo中的字段类型

Python 积分

python - 如何在 Altair 中创建簇状条形图

python - 如何将时间分布式层与卷积层一起使用?

python - 无法从 Google Colab 外部的 Tensorflow 运行 CycleGan 示例

python - 如何在Tensorflow 2中使用CRF层(使用tfa.text)?

python - 一旦我的 Python 脚本知道密码,就以 sudo 运行自己或其他程序?

python - 附加到集合的对象是 `NoneType` python 2.7

python - 使用 Tensorflow 在 2D 张量中查找唯一值

python - 总结直方图中的 Nan