python - 为什么使用下划线('_')作为变量名?
问题描述
我试图从一些张量流代码中理解这行代码
_, l = session.run([optimizer, loss], feed_dict=feed_dict)
此行的上下文来自
with tf.Session(graph=graph) as session:
tf.global_variables_initializer().run()
print('Initialized')
average_loss = 0
for step in range(num_steps):
batch_data, batch_labels = generate_batch(
batch_size, num_skips, skip_window)
feed_dict = {train_dataset : batch_data, train_labels : batch_labels}
_, l = session.run([optimizer, loss], feed_dict=feed_dict)
average_loss += l
if step % 2000 == 0:
if step > 0:
average_loss = average_loss / 2000
# The average loss is an estimate of the loss over the last 2000 batches.
print('Average loss at step %d: %f' % (step, average_loss))
average_loss = 0
# note that this is expensive (~20% slowdown if computed every 500 steps)
if step % 10000 == 0:
sim = similarity.eval()
for i in range(valid_size):
valid_word = reverse_dictionary[valid_examples[i]]
top_k = 8 # number of nearest neighbors
nearest = (-sim[i, :]).argsort()[1:top_k+1]
log = 'Nearest to %s:' % valid_word
for k in range(top_k):
close_word = reverse_dictionary[nearest[k]]
log = '%s %s,' % (log, close_word)
print(log)
final_embeddings = normalized_embeddings.eval()
完整的代码在这里
https://github.com/tensorflow/tensorflow/blob/master/tensorflow/examples/udacity/5_word2vec.ipynb
为什么下划线被用作变量?似乎是一个奇怪的选择,但这是来自官方的 Tensorflow github,所以一定是有原因的。
解决方案
解包列表/元组时,_
通常用于您以后不需要的值。如果您仔细查看该代码,该_
变量实际上并未在任何地方使用。
请注意,在 Python REPL 中,_
指的是最新结果。
>>> 2+2 4 >>> _ 4
推荐阅读
- javascript - 防止点击 React-Fiber Three.js 中的对象
- python - 如何在python中计算汇总值
- javascript - 我如何在 sql 查询中使用 express.js 变量
- node.js - 为什么每次打开终端都必须安装 npm?
- flutter - 如何添加容器小部件?我可以点击并得到答案
- python - 向所有用户发送消息(dm off 失败)
- node.js - 将数据从 Firestore 导出到 GCS
- javascript - 如何在 React js 中以表单形式显示验证错误?
- reactjs - 单页应用程序中的窗口加载
- azure - 使用 ADF 将文件夹从具有 2 级子文件夹的 azure 容器移动到与子文件夹同名的容器级