首页 > 解决方案 > 错误“NameError:名称'logdir'未定义”

问题描述

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

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

错误:

NameError:名称“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

标签: pythontensorflowmachine-learning

解决方案


因此,通过谷歌搜索"compile_and_fit" "tiny_model" logdir,我发现您正在遵循的教程必须是https://www.tensorflow.org/tutorials/keras/overfit_and_underfit

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

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

推荐阅读