如何在张量板上显示潜在层?

How to show latent layer in tensorboard?

我有一个经过训练的自动编码器模型,我想在张量板中可视化潜在层。

我该怎么做?

    el1 = Conv2D(8, (3, 3), activation='relu', padding='same', input_shape=(224, 224, 3))
    el2 = MaxPooling2D((2, 2), padding='same')
    el3 = Conv2D(8, (3, 3), activation='relu', padding='same')
    el4 = MaxPooling2D((2, 2), padding='same')


    dl1 = Conv2DTranspose(8, (3, 3), strides=2, activation='relu', padding='same')
    dl2 = Conv2DTranspose(8, (3, 3), strides=2, activation='relu', padding='same')
    output_layer = Conv2D(3, (3, 3), activation='sigmoid', padding='same')

    autoencoder = Sequential()
    autoencoder.add(el1)
    autoencoder.add(el2)
    autoencoder.add(el3)
    autoencoder.add(el4)
    autoencoder.add(dl1)
    autoencoder.add(dl2)
    autoencoder.add(output_layer)
    autoencoder.compile(optimizer='adam', loss="binary_crossentropy")




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

autoencoder.fit(X_train, X_train, epochs=100, batch_size=64, validation_data=(X_test, X_test), verbose=1,
                    callbacks=[tensorboard_callback])

模型拟合后,如何将latent layer添加到tensor-board中并在运行 tsnepca后查看?

您可以按照指南进行操作:Visualizing Data using the Embedding Projector in TensorBoard

我假设“潜在层”是指“潜在 space”,即编码输入的表示。

在你的情况下,如果你想表示你的潜在 space,首先需要从你的自动编码器中提取编码器部分。这个可以用keras的函数API来实现:

# After fitting the autoencoder, we create a model that represents the encoder
encoder = tf.keras.Model(autoencoder.input, autoencoder.get_layer(el4.name).output)

然后,可以使用编码器计算测试集的潜在表示:

latent_test = encoder(X_test)

然后,按照上面链接的指南,可以将潜在表示保存在检查点中,以便使用 Tensorboard 投影仪进行可视化:

# Save the weights we want to analyze as a variable.
# The weights need to have the shape (Number of sample, Total Dimensions)
# Hence why we flatten the Tensor
weights = tf.Variable(tf.reshape(latent_test,(X_test.shape[0],-1)), name="latent_test")
# Create a checkpoint from embedding, the filename and key are the
# name of the tensor.
checkpoint = tf.train.Checkpoint(latent_test=weights)
checkpoint.save(os.path.join(logdir, "embedding.ckpt"))

from tensorboard.plugins import projector
# Set up config.
config = projector.ProjectorConfig()
embedding = config.embeddings.add()
# The name of the tensor will be suffixed by `/.ATTRIBUTES/VARIABLE_VALUE`.
embedding.tensor_name = "latent_test/.ATTRIBUTES/VARIABLE_VALUE"
projector.visualize_embeddings(logdir, config)

最后,投影仪可以通过 运行 Tensorboard 访问:

$ tensorboard --logdir /path/to/logdir

最后是带有 PCA 的投影仪图像(这里有一些随机数据):