tensorflow的奇妙下划线,形如(_,变量)变量命名操作的解释

2023-05-16

问题的发现

今天在尝试实现《深度学习之TensorFlow入门、原理与进阶实战》的时候书写了一段代码,其中有一行代码我甚是纠结了半天,代码如下:

_,c = sess.run([optimizer,cost],feed_dict={x:batch_xs,y:batch_yx})

就是这样一行代码的头部_,c的操作看得我迷了半天,为什么会有这样的表达,在我网上冲浪并且询问大佬过后终于明白了这的代码这样书写的原因。

问题的解决

在python运行的过程中,往往会出现需要运算但是不需要其返回值的情况出现,即:我需要你运算一下,但是我不需要再操作你的结果(是不是很jian哈哈哈哈)。而这里的情况就是如此,代码中一个session中让两个参数都运算了,但是在后续的程序中,我们只需要操作cost这个变量而不需要操作optimizer这个变量。注意,这时候下划线就起作用了,在查阅了python的官方关于下划线的文档之后,发现在多个参数返回运算时,下划线可以充当一个类似占位符一样的作用,仅仅表示这有一个参数而不去指明它的名称(因为后续操作不到这个参数,所以不需要指明)。

这样理解以后,我将上述一行代码拆分成了两行代码如下:

sess.run(optimizer,feed_dict={x:batch_xs,y:batch_ys})
c = sess.run(cost,feed_dict={x:batch_xs,y:batch_ys})

这里第一个运算是没有返回值指明的,只有第二个指明的返回值变量,这样拆分后经过验证是与未拆分前完成的操作是一致的。

总结

总的来说,上述的仅一行的那种代码是python书写追求优雅性的体现,(确实是优雅啊,优雅到我都看不懂23333),看来自己在优雅python大师养成之路上还有很远一段征程要走啊!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

tensorflow的奇妙下划线,形如(_,变量)变量命名操作的解释 的相关文章

随机推荐