Tensorboard自述文件的图像仪表板部分说:
由于图像仪表板支持任意png,因此您可以使用它将自定义可视化(例如matplotlib散点图)嵌入到TensorBoard中.
我看到如何将pyplot图像写入文件,作为张量读回,然后与tf.image_summary()一起使用以将其写入TensorBoard,但自述文件中的这一陈述表明有更直接的方法.在那儿?如果是这样,是否有任何进一步的文档和/或示例如何有效地执行此操作?
我正在尝试使用 TensorFlow 2.0 设置图像识别 CNN。为了能够分析我的图像增强,我想在张量板中查看我输入网络的图像。
不幸的是,我不知道如何使用 TensorFlow 2.0 和 Keras 来做到这一点。我也没有真正找到这方面的文档。
为简单起见,我展示了一个 MNIST 示例的代码。我将如何在此处添加图像摘要?
import tensorflow as tf
(x_train, y_train), _ = tf.keras.datasets.mnist.load_data()
def scale(image, label):
return tf.cast(image, tf.float32) / 255.0, label
def augment(image, label):
return image, label # do nothing atm
dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train))
dataset = dataset.map(scale).map(augment).batch(32)
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(dataset, epochs=5, callbacks=[tf.keras.callbacks.TensorBoard(log_dir='D:\\tmp\\test')])
Run Code Online (Sandbox Code Playgroud) 我已将Tensorboard与Keras设置为回调,如下所示:
callback_tb = keras.callbacks.TensorBoard(log_dir=tb_dir, histogram_freq=2,write_graph=True,write_images=True)
callbacks_list = [callback_save,callack_view, callback_tb]
model.fit(x_train,y_train,
batch_size=batch_size,
epochs=epochs,
callbacks=callbacks_list,
verbose=1,
validation_data=(x_test,y_test),
shuffle='batch')
Run Code Online (Sandbox Code Playgroud)
这很好,我可以看到Tensorboard上的损失和准确度图表.我正在另一个文件中生成并保存模型预测,但我想知道是否可以使用Keras在Tensorboard上查看这些图像?
我tf.summary.image在https://github.com/tensorflow/tensorboard上找到了这个功能
但我不明白这与Keras的关系.任何帮助,将不胜感激.
我编写了一个自定义 keras 回调来检查来自生成器的增强数据。(有关完整代码,请参阅此答案tf.data.Dataset。)但是,当我尝试对 a 使用相同的回调时,它给了我一个错误:
File "/path/to/tensorflow_image_callback.py", line 16, in on_batch_end
imgs = self.train[batch][images_or_labels]
TypeError: 'PrefetchDataset' object is not subscriptable
Run Code Online (Sandbox Code Playgroud)
keras 回调通常只适用于生成器,还是与我编写回调的方式有关?有没有办法修改我的回调或数据集以使其工作?
我认为这个难题由三部分组成。我对其中任何一个和所有的改变持开放态度。首先是自定义回调类中的init函数:
class TensorBoardImage(tf.keras.callbacks.Callback):
def __init__(self, logdir, train, validation=None):
super(TensorBoardImage, self).__init__()
self.logdir = logdir
self.file_writer = tf.summary.create_file_writer(logdir)
self.train = train
self.validation = validation
Run Code Online (Sandbox Code Playgroud)
其次,on_batch_end同一个类中的函数
def on_batch_end(self, batch, logs):
images_or_labels = 0 #0=images, 1=labels
imgs = self.train[batch][images_or_labels]
Run Code Online (Sandbox Code Playgroud)
三、实例化回调
import tensorflow_image_callback
tensorboard_image_callback = tensorflow_image_callback.TensorBoardImage(logdir=tensorboard_log_dir, train=train_dataset, validation=valid_dataset)
model.fit(train_dataset,
epochs=n_epochs,
validation_data=valid_dataset,
callbacks=[
tensorboard_callback,
tensorboard_image_callback
])
Run Code Online (Sandbox Code Playgroud)
一些尚未让我找到答案的相关主题:
tensorflow ×4
keras ×3
python ×3
tensorboard ×3
callback ×1
matplotlib ×1
python-2.7 ×1
summary ×1