Python 无法在tensorflow keras中附加tensorboard回调

Python 无法在tensorflow keras中附加tensorboard回调,python,tensorflow,keras,Python,Tensorflow,Keras,我正在训练一个基于逻辑回归的模型,并试图在tensorboard中查看计算图。然而,当我运行代码时,我得到了下面提到的错误 没有附加回调,我的model.fit()运行得非常好。还有人建议,我添加了update\u freq=1000 logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S")) tensorboard_callback = tf.keras.callbacks.TensorBoa

我正在训练一个基于逻辑回归的模型,并试图在tensorboard中查看计算图。然而,当我运行代码时,我得到了下面提到的错误

没有附加回调,我的model.fit()运行得非常好。还有人建议,我添加了
update\u freq=1000

logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1, update_freq=1000)

model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(10, activation=tf.nn.softmax)])

model.compile(optimizer='sgd',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])

model.fit(np.matrix(train_X), np.matrix(train_y).T, epochs=10, callbacks=[tensorboard_callback])
但是,我遇到了以下错误:

    AttributeError                            Traceback (most recent call last)
<ipython-input-73-90c175274a55> in <module>()
      8 metrics=['accuracy'])
      9 
---> 10 model.fit(np.matrix(train_X), np.matrix(train_y).T, epochs=20, callbacks=[tensorboard_callback])

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, max_queue_size, workers, use_multiprocessing, **kwargs)
    878     """Returns the loss value & metrics values for the model in test mode.
    879 
--> 880     Computation is done in batches.
    881 
    882     Arguments:

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training_arrays.py in model_iteration(model, inputs, targets, sample_weights, batch_size, epochs, verbose, callbacks, val_inputs, val_targets, val_sample_weights, shuffle, initial_epoch, steps_per_epoch, validation_steps, mode, validation_in_fit, **kwargs)
    250         # Loop over dataset for the specified number of steps.
    251         target_steps = steps_per_epoch
--> 252 
    253       step = 0
    254       while step < target_steps:

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in on_epoch_begin(self, epoch, logs, mode)
    235           'to the batch update (%f). Check your callbacks.', hook_name,
    236           delta_t_median)
--> 237 
    238   def _call_begin_hook(self, mode):
    239     """Helper function for on_{train|test|predict}_begin methods."""

/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py in on_epoch_begin(self, epoch, logs)
   1139         samples. Note that writing too frequently to TensorBoard can slow down
   1140         your training.
-> 1141       profile_batch: Profile the batch to sample compute characteristics. By
   1142         default, it will profile the second batch. Set profile_batch=0 to
   1143         disable profiling. Must run in TensorFlow eager mode.

AttributeError: 'NoneType' object has no attribute 'fetches'
AttributeError回溯(最近一次调用)
在()
8个指标=[‘准确度’])
9
--->10模型拟合(np.matrix(train_X),np.matrix(train_y).T,epochs=20,回调=[tensorboard_callback])
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py-in-fit(self、x、y、批大小、历元、冗余、回调、验证拆分、验证数据、洗牌、类权重、样本权重、初始历元、每个历元的步骤、验证步骤、最大队列大小、工作者、使用多处理、**kwargs)
878“返回测试模式下模型的损失值和度量值。
879
-->880计算是分批进行的。
881
882个参数:
/模型迭代中的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training\u array.py(模型、输入、目标、样本权重、批量大小、历元、冗余、回调、val\u输入、val\u目标、val\u样本权重、无序、初始历元、每历元的步骤、验证步骤、模式、验证\u拟合,**kwargs)
250#在数据集上循环指定的步骤数。
251目标步数=每个历元步数
--> 252 
253阶跃=0
254当步骤<目标\步骤:
/开始时的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py(self、epoch、logs、mode)
235'到批更新(%f)。检查您的回调。“,hook_name,
236三角洲(中位数)
--> 237 
238 def_call_begin_hook(自我,模式):
239“{train | test | predict}u begin方法的辅助函数”
/开始时的usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/callbacks.py(self、epoch、logs)
1139个示例。请注意,过于频繁地在张力板上书写可能会减慢速度
1140你的训练。
->1141 profile_batch:根据样本计算特征对批次进行配置
1142默认情况下,它将分析第二批。将profile_batch=0设置为
1143禁用分析。必须在TensorFlow模式下运行。
AttributeError:“非类型”对象没有属性“获取”

需要帮助!

文档说明:

直方图_freq:计算激活的频率(以历元为单位) 以及模型各层的权重直方图。如果设置为0, 不会计算直方图。验证数据(或分割)必须为 为直方图可视化指定

设置histogram_freq=1使其在每个历元计算直方图。因此产生了错误。
将其设置为0将不会计算直方图,将其设置为5将在每5个历元计算直方图。

您必须在
fit
中设置
validation\u data
才能使用
直方图\u freq

只需以(x,y)或数据集/数据集迭代器的格式传入一些数据

这很好,因为它允许您使用不同于tensor board中培训的数据集

model = create_model()
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

log_dir="logs/fit/" +
datetime.datetime.now().strftime("%Y%m%d-%H%M%S") tensorboard_callback
= tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

model.fit(x=x_train, # works with generator/iterator datasets, too.
          y=y_train, 
          epochs=5, 
--------> validation_data=(x_test, y_test), # or pass in your dataset iterator/generator
          callbacks=[tensorboard_callback])
TF Keras使用回调文档的示例:

然后,只需点燃张力板:

tensorboard --logdir=path/to/logs/

我认为问题出在培训中。试着删除
回调
并运行代码,告诉我发生了什么正如我所提到的,它在没有回调的情况下运行得很好。当我删除
直方图时,它工作得很好。\u freq
arg你能把它写下来作为答案吗??