错误“ NameError:未定义名称'logdir'”

时间:2020-03-29 18:24:08

标签: python tensorflow machine-learning

作为初学者,我正在关注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

1 个答案:

答案 0 :(得分:0)

因此,通过搜索"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()到达该行,看到名称logdir,在其本地变量中找不到该名称的任何内容,因此尝试访问该名称的 global 变量取而代之。但是Python抱怨说,这个名字不存在根本不存在,甚至根本没有全局变量-因此,我想您一定已经跳过了本教程的较早部分,您将在其中设置该全局变量:

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