关于手写数字分类的教程有错误/缺失的属性

时间:2017-11-22 02:09:30

标签: 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()

1 个答案:

答案 0 :(得分:3)

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

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

在我的情况下,这给了我三个权重变量名为"线性//重量","线性//重量/ d /线性//重量/ part_0 / Ftrl"和& #34;线性//重量/ d /线性//重量/ part_0 / Ftrl_1"以及其他一些东西。这些张量非常大,因此它们的值仅以缩写形式显示。然后,您可以将其中一个传递给weights

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

你应该看到教程中的图像。它们中的所有三个都很相似,但它们并不相同,所以LinearClassifier可能正在做一些比以前更复杂的事情。