如何在使用DNNCLassifier时可视化嵌入 - Tensorflow

时间:2017-06-08 15:13:54

标签: python machine-learning tensorflow tensorboard

我看了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上的嵌入。

1 个答案:

答案 0 :(得分:1)

一种方法是使用tf.contrib.learn.monitors.ValidationMonitor

初始化DNNClassifier时,您可以传递监视器参数

请参阅https://www.tensorflow.org/get_started/monitors