为什么 Flatten 层在 tensorboard 中有两个输入

Why Flatten layer has two input in tensorboard

这是一个重现问题的简单示例:

model = keras.models.Sequential()
model.add(keras.layers.Flatten(input_shape=[784,]))
model.add(keras.layers.Dense(300, activation="relu"))
model.add(keras.layers.Dense(10, activation="softmax"))

import numpy as np 

X_train = np.random.normal(size=(100, 784))
y_train = np.random.randint(low=0, high=10, size=(100,))

X_valid = np.random.normal(size=(50, 784))
y_valid = np.random.randint(low=0, high=10, size=(50,))

model.compile(optimizer=tf.keras.optimizers.Adam(),
          loss='sparse_categorical_crossentropy',)

tensorboard_cb = tf.keras.callbacks.TensorBoard(
    log_dir='logs', histogram_freq=0, write_graph=True, write_images=False,
    update_freq='epoch', profile_batch=0, embeddings_freq=0,
    embeddings_metadata=None)
history = model.fit(X_train, y_train, epochs=20, validation_data=(X_valid, y_valid), callbacks=tensorboard_cb)

这是张量板上的结果:

我重新运行 你的代码,发现模型图表上只有 1 个输入。也没有 dense_2 层。也许您将 logs 目录用于不止 1 个模型,所以这让 Tensorboard 感到困惑?

尝试重新运行模型,从干净的日志目录开始(更改名称或删除 运行 之前的旧目录)。