获取输出层 Tensorflow 1.14

Get output layer Tensorflow 1.14

我想使用 TLSTM 为时变数据创建多模式机器学习模型。 为了连接时变数据和非时变数据,我需要获取 TLSTM 的输出向量。
我正在使用这个 TLSTM 模型:https://github.com/illidanlab/T-LSTM
我更新了 repo 以与 Tensorflow 1.14 和 Python 3.7.12.

兼容

我假设您可以在 get_output 函数中对输出向量进行反应:

    def get_output(self, state):
        output = tf.nn.relu(tf.matmul(state, self.Wo) + self.bo)
        output = tf.nn.dropout(output, self.keep_prob)
        output = tf.matmul(output, self.W_softmax) + self.b_softmax
        return output

如果我打印输出,我得到一个张量:

output = tf.nn.relu(tf.matmul(state, self.Wo) + self.bo)
print(output)
-> Tensor("map_5/while/Relu:0", shape=(?, 64), dtype=float32)
print(output[0])
-> Tensor("map_5/while/strided_slice:0", shape=(64,), dtype=float32)
print(output[0, 0])
-> Tensor("map_5/while/strided_slice_1:0", shape=(), dtype=float32)

64 维似乎是我正在寻找的输出,我如何访问它?

解法:tf.print()

请注意,在会话内部它必须被称为 control_dependence:

    def get_output(self, state):
        output = tf.nn.relu(tf.matmul(state, self.Wo) + self.bo)
        print_op = tf.print(
            output,
            summarize=-1,
            output_stream="file://C:/Users/my_path/T-LSTM-master/features/foo.out")
        with tf.control_dependencies([print_op]):
            output = tf.nn.dropout(output, self.keep_prob)
            output = tf.matmul(output, self.W_softmax) + self.b_softmax
            return output

本例直接将要素保存为文件。 Summarize=-1 到 save/print 整个张量。

如果您只想打印 output 张量,大多数时候 tf.print(output) 会给出所需的结果。