【问题标题】:Error "NameError: name 'logdir' is not defined"错误“NameError:名称'logdir'未定义”
【发布时间】:2020-03-29 18:24:08
【问题描述】:

作为初学者,我正在学习 tensorflow 网站上的教程。 在回归部分,我收到以下错误

命令: size_histories['Tiny'] = compile_and_fit(tiny_model, 'sizes/Tiny')

错误:

NameError: name 'logdir' 未定义

我将非常感谢任何帮助。

完整的错误信息在这里:

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-29-6b42ade0df41> in <module>
----> 1 size_histories['Small'] = compile_and_fit(small_model, 'sizes/Small')

<ipython-input-20-37c172377a6c> in compile_and_fit(model, name, optimizer, max_epochs)
     16     epochs=max_epochs,
     17     validation_data=validate_ds,
---> 18     callbacks=get_callbacks(name),
     19     verbose=0)
     20   return history

<ipython-input-19-1fd695b661fd> in get_callbacks(name)
      3     tfdocs.modeling.EpochDots(),
      4     tf.keras.callbacks.EarlyStopping(monitor='val_binary_crossentropy', patience=200),
----> 5     tf.keras.callbacks.TensorBoard(logdir/name),
      6   ]

NameError: name 'logdir' is not defined

【问题讨论】:

  • 很难说,但我猜compile_and_fit 包含您编写的代码?在该代码中,某处使用了名称logdir,而没有首先为其分配值。除非您粘贴错误消息的完整回溯,否则我们只能盲目推测问题可能出在哪里。 (但如果您自己花时间查看回溯的每一行,您可能会看到它明确地告诉您问题发生在哪个文件的哪一行。)
  • 谢谢,我已经添加了完整的错误信息。

标签: python tensorflow machine-learning


【解决方案1】:

所以通过谷歌搜索"compile_and_fit" "tiny_model" logdir我发现你正在关注的教程必须是https://www.tensorflow.org/tutorials/keras/overfit_and_underfit

正如回溯告诉你的那样,compile_and_fit() 调用了get_callbacks(),而后者又使用了变量logdir。 logdir 没有作为参数直接传递给get_callbacks(),也没有在函数内部的任何地方定义。 因此,get_callbacks() 到达该行,看到名称 logdir,无法在其局部变量中找到该名称的任何内容,因此尝试访问该名称的 global 变量。但是 Python 抱怨 nothing 根本不存在这个名称,甚至没有一个全局变量——所以我猜你一定跳过了教程的前面部分,在那里你应该设置那个全局变量:

logdir = pathlib.Path(tempfile.mkdtemp())/"tensorboard_logs"
shutil.rmtree(logdir, ignore_errors=True)

【讨论】:

  • 非常感谢!是的,我天真地跳过了台词。祝你有美好的一天!
猜你喜欢
  • 2019-06-07
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多