使用tensorboard的TensorFlow keras回调。ProfilerNotRunningError:无法停止分析。没有分析器正在运行

2024-06-07 07:29:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了这个错误:Cannot stop profiling. No profiler is running。它能与log_dir相关吗

在本期之前,我在创建目录时遇到了一个问题。我已经通过手动创建目录修复了它。“无法停止分析。没有分析程序正在运行”错误是否相关

请帮忙

这是密码

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten,Conv2D, MaxPooling2D
from tensorflow.keras.callbacks import TensorBoard

import pickle
import time

NAME = "car_and_sign"#.format(int(time.time()))

tensorboard=TensorBoard(log_dir='logs/{}'.format(NAME))

X=pickle.load(open("X.pickle","rb"))
y=pickle.load(open("y.pickle","rb"))

X=X/255

model = Sequential()

model.add(Conv2D(64,(3,3),input_shape=X.shape[1:]))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Conv2D(64,(3,3)))
model.add(Activation("relu"))
model.add(MaxPooling2D(pool_size=(2,2)))

model.add(Flatten())
model.add(Dense(64))

model.add(Dense(1))
model.add(Activation('sigmoid'))

tensorboard = TensorBoard(log_dir="logs/{}".format(NAME))

model.compile(loss="binary_crossentropy",
             optimizer="adam",
             metrics=['accuracy'])

model.fit(X,y,
          batch_size=32,
          epochs=3,
          validation_split=0.3,
          callbacks=[tensorboard])

错误:

Train on 2935 samples, validate on 1258 samples
Epoch 1/3
WARNING:tensorflow:Trace already enabled
32/2935 [..............................] - ETA: 35s - loss: 0.7010 - 
accuracy: 0.5312Traceback (most recent call last):

File "F:\Python\lib\site- 
packages\tensorflow_core\python\keras\engine\training_v2.py", line 753, in on_start
yield

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 342, in fit
total_epochs=epochs)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 181, in run_one_epoch
step += 1

File "F:\Python\lib\contextlib.py", line 119, in __exit__
next(self.gen)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 788, in on_batch
mode, 'end', step, batch_logs)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 239, in _call_batch_hook
batch_hook(batch, logs)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 1695, in on_train_batch_end
self._log_trace()

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 1747, in _log_trace
profiler_outdir=os.path.join(self._log_write_dir, 'train'))

File "F:\Python\lib\site-packages\tensorflow_core\python\ops\summary_ops_v2.py", line 1240, in trace_export
_profiler.save(profiler_outdir, _profiler.stop())

File "F:\Python\lib\site-packages\tensorflow_core\python\eager\profiler.py", line 99, in stop
'Cannot stop profiling. No profiler is running.')

ProfilerNotRunningError: Cannot stop profiling. No profiler is running.

在处理上述异常期间,发生了另一个异常:

Traceback (most recent call last):

File "C:\Users\malic\Documents\projects\Spide\train_loaddata.py", line 47, in <module>
callbacks=[tensorboard])

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\engine\training.py", line 819, in fit
use_multiprocessing=use_multiprocessing)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 397, in fit
prefix='val_')

File "F:\Python\lib\contextlib.py", line 130, in __exit__
self.gen.throw(type, value, traceback)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py", line 757, in on_start
self.callbacks._call_end_hook(mode)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 262, in _call_end_hook
self.on_train_end()

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 379, in on_train_end
callback.on_train_end(logs)

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 1720, in on_train_end
self._log_trace()

File "F:\Python\lib\site-packages\tensorflow_core\python\keras\callbacks.py", line 1747, in _log_trace
profiler_outdir=os.path.join(self._log_write_dir, 'train'))

File "F:\Python\lib\site-packages\tensorflow_core\python\ops\summary_ops_v2.py", line 1240, in trace_export
_profiler.save(profiler_outdir, _profiler.stop())

File "F:\Python\lib\site-packages\tensorflow_core\python\eager\profiler.py", line 99, in stop
'Cannot stop profiling. No profiler is running.')

ProfilerNotRunningError: Cannot stop profiling. No profiler is running.

Tags: inpycoreaddmodelonlibpackages
2条回答

如果将来有人偶然发现这一点:

问题是this github issue中讨论的logdir路径中的/。只需将路径更改为\\,它就会工作

因此,替换

tensorboard = TensorBoard(log_dir="logs/{}".format(NAME))

tensorboard = TensorBoard(log_dir="logs\\{}".format(NAME))

原因是,在此tf版本中,如果路径包含向后斜杠,则路径不能包含向前斜杠。但是由于tensorflow向logdir路径添加了更多内容(带有a),因此它失败了

至少这是我修好它的原因

对于较新版本的Tensorflow,您可以尝试运行以下程序:

tf.profiler.experimental.stop()

相关问题 更多 >