我看了this教程,了解如何在Tensorboard上可视化嵌入。整个代码是here。他使用卷积神经网络训练模型。以下是构建嵌入的核心部分:
embedding = tf.Variable(tf.zeros([1024, embedding_size]), name="test_embedding")
assignment = embedding.assign(embedding_input)
config = tf.contrib.tensorboard.plugins.projector.ProjectorConfig()
embedding_config = config.embeddings.add()
embedding_config.tensor_name = embedding.name
embedding_config.sprite.image_path = LOGDIR + 'sprite_1024.png'
embedding_config.metadata_path = LOGDIR + 'labels_1024.tsv'
# Specify the width and height of a single thumbnail.
embedding_config.sprite.single_image_dim.extend([28, 28])
tf.contrib.tensorboard.plugins.projector.visualize_embeddings(writer, config)
其中embedding_input
是网络的完全连接层。
我正在使用DNNCLassifier
对象来对控制论攻击进行分类。这是我的一段代码。
def input_fn(data_set):
continuous_cols = {k: tf.constant(data_set[k].values)
for k in CONTINUOUS_COLUMNS}
categorical_cols = {k: tf.SparseTensor(
indices=[[i, 0] for i in range(data_set[k].size)],
values=data_set[k].values,
dense_shape=[data_set[k].size, 1])
for k in CATEGORICAL_COLUMNS}
feature_cols = dict(continuous_cols.items() + categorical_cols.items())
label = tf.constant(data_set[LABEL_COLUMN].values)
return feature_cols, label
def train_input_fn():
return input_fn(training_set)
def eval_input_fn():
return input_fn(test_set)
classifier = tf.contrib.learn.DNNClassifier(model_dir=model_dir,
feature_columns=deep_columns,
n_classes=5,
hidden_units=[12, 4],
label_keys=label_keys_values,
optimizer=tf.train.ProximalAdagradOptimizer(
learning_rate=0.1,
l1_regularization_strength=0.001
))
classifier.fit(input_fn=train_input_fn, steps=200)
results = classifier.evaluate(input_fn=eval_input_fn, steps=1)
有没有办法让DNNClassifier的神经网络输出层用作embedding_input
?我想将攻击类型可视化为Tensorboard上的嵌入。
答案 0 :(得分:1)
一种方法是使用tf.contrib.learn.monitors.ValidationMonitor
初始化DNNClassifier时,您可以传递监视器参数