python - PyCharm TensorFlow 警告 - 类型 'Variable' 没有预期的属性 '__sub__'

标签 python tensorflow pycharm

TensorFlow GitHub repository 复制 retrain.py 后

然后在 PyCharm 中打开它,在第 794 和 802 行 PyCharm 显示以下警告:

Type 'Variable' doesn't have expected attribute '__sub__'

如果有帮助,这里是截图:

enter image description here

谁能解释一下:

  1. 这是什么意思?

  2. 如何解决这个问题或抑制警告?

显然 PyCharm 认为 layer_weights 没有属性 "__sub__",但这意味着什么以及为什么 __sub__ 属性是必要的?函数 variable_summaries() 不引用属性 __sub__(从第 735 行开始复制/粘贴):

def variable_summaries(var):
    """Attach a lot of summaries to a Tensor (for TensorBoard visualization)."""
    with tf.name_scope('summaries'):
        mean = tf.reduce_mean(var)
        tf.summary.scalar('mean', mean)
        with tf.name_scope('stddev'):
            stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
        tf.summary.scalar('stddev', stddev)
        tf.summary.scalar('max', tf.reduce_max(var))
        tf.summary.scalar('min', tf.reduce_min(var))
        tf.summary.histogram('histogram', var)
# end of function

有人可以解释为什么属性 __sub__ 是必需的吗?

看完this帖子,我的印象是可以添加一条评论来抑制这个警告,可能是这样的:

@type whatGoesHere: ??
@attribute __sub__: comment here??    # is this correct?
@param whatGoesHere: ??

这样的事情可行吗,评论应该是什么?

我不想禁用 PyCharm 的警告,因为我发现它们在很多情况下都很有用。有人可以提供一些关于上述内容的启示,以避免在 PyCharm 中禁用此警告吗?

- 编辑:

谢谢舒的解释。目前,这似乎是在 PyCharm 中处理此问题而不完全禁用该检查的最佳方法:

# this comment is necessary to suppress an unnecessary PyCharm warning
# noinspection PyTypeChecker
variable_summaries(layer_weights)

如果最终有人能告诉我更好的选择,那就太好了。

最佳答案

- 运算符在 variable_summaries 内的 var 上调用:

stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))

通常 Python 会在计算表达式 var - mean 时寻找 var__sub__ 方法。但是,tf.Variable 实例包裹在 state_ops.variable_op_v2 中以支持 GPU/CPU 上的 Ops,并且没有 __sub__ 方法Python 通常会期望的。

因此,此警告是 TensorFlow 在 Tensorflow 对象上大量自定义标准 Python 运算符的方式所固有的,以便在使用 Tensorflow OP 启用 GPU/CPU 计算时支持我们习惯的表达式。

我想说你可以安全地忽略任何 Tensorflow 对象上的这个警告。不幸的是,我不知道如何在 PyCharm 中抑制此警告。

关于python - PyCharm TensorFlow 警告 - 类型 'Variable' 没有预期的属性 '__sub__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48824351/

相关文章:

python - Tensorflow/Keras : Model accuracy during training is always 0. 5 输入大小与第一个官方教程不同

python - 让 PyC​​harm 控制台像在 Eclipse 中一样工作?

python - Pycharm 中的基本解释器不显示来自 Linux 的 Windows 子系统的 Python [Ubuntu 20.04]

python - 在 PyCharm 调试器控制台中设置启动脚本

python - 如何在简单的 wsgi 应用程序中响应 ajax?

python - 仅使用操作名称和服务帐户凭据访问使用 AutoML 批量预测创建的长时间运行的操作

python - 如何在 pandas HDF5 'read-only mode' 文件之上写入?

python - 如何更改 pandas df 中特定行的时间戳

python - 在体内创建变量时正确使用 tf.while_loop

python - 是否可以将 NumPy 函数映射到 tf.data.dataset?