如何从tf估计器获取张量(不是变量)?

时间:2019-01-21 16:08:15

标签: python tensorflow deep-learning

我正在使用tf估计器api来训练LSTM模型。我将model_fn定义如下。训练模型后,我想获得张量“ attention_a”。它不是变量。因此,我无法使用get_variable_value()来获取它。我尝试使用tf.summary.tensor_summary("alpha", a)。但是在TensorBoard中找不到张量。

有什么想法可以在训练后恢复张量吗?

def bilstm_fn(features, labels, mode, params):
    ...
    # Attention
    with tf.variable_scope("Attention", reuse=tf.AUTO_REUSE):
        W = tf.get_variable("W", [n_units*2, attn_size])
        b = tf.get_variable("b", [attn_size])
        e = tf.tanh(tf.tensordot(dropout1, W, axes=1) + b)
        a = tf.nn.softmax(e, name="attention_a")
        r = tf.multiply(a, dropout1)
    ...
    if mode == tf.estimator.ModeKeys.TRAIN:
        optimizer = tf.train.AdamOptimizer()
        train_op = optimizer.minimize(loss=loss, 
            global_step=tf.train.get_global_step())
        return tf.estimator.EstimatorSpec(mode=mode, loss=loss, 
            train_op=train_op)

1 个答案:

答案 0 :(得分:0)

您可以使用tf.get_tensor_by_name()获得所需的那个。