在Tensorflow中提供隐藏的张量

时间:2017-07-27 22:24:58

标签: tensorflow autoencoder

我有一些autoencoder。该模型现在并不重要。假设该模型将一些图像作为输入并输出重建图像。训练结束后,我希望看到一个张量对输出的影响。此外,图像通过autoencoder输入FIFOQueue。因此,在运行以下代码时:

reconstructed_image = sess.run([deconv_image], feed_dict={mu:my_vector})

其中deconv_image是模型的输出tensor,而mu是模型中隐藏的张量;将使用Queue中的图像自动提供模型。

我的问题是:mu内的值是否应该被来自输入图像的任何内容所取代,或者它采用我使用feed_dict参数提供的向量。

非常感谢任何帮助!!

1 个答案:

答案 0 :(得分:0)

当运行最终张量时,即评估图的最后张量时,它将运行它所依赖的所有张量。因此,如果我们y3操作取决于y2y2取决于y1,那么在图表中运行最终张量将导致y1成为y2首先运行,然后y1在从y2获取输入后进行评估,最后y3的输出将输入y1 -> y2 -> y3。此图表可能如下所示:y3

另一方面,我可以通过使用feed_dict参数直接输入其输入来运行(求值)y2。在这种情况下,会评估y1import tensorflow as tf import numpy as np x = np.array([1.0, 2.0, 3.0]) x_var = tf.Variable(x, dtype=tf.float32) y1 = tf.square(x_var) y2 = tf.subtract(y1, tf.constant(1.0)) init_op = tf.global_variables_initializer() with tf.Session() as sess: sess.run(init_op) print(sess.run(y2)) # Output: [ 0. 3. 8.] print(sess.run(y2, feed_dict={y1: [1.0, 1.0, 1.0]}))# Output: [ 0. 0. 0.]

例如:

unsigned char** GeneratePalette()
{
    unsigned char red[256];
    unsigned char green[256];
    unsigned char blue[256];

    for(int value = 0; value < 256; value++)
    {
        if(value < 30)
        {
            red[value] = 0;
            green[value] = 255;
            blue[value] = 0;
        }
        else
        {
            red[value] = 0;
            green[value] = 0;
            blue[value] = 255;
        }
    }

    unsigned char* table[3] = { red, green, blue };
    return table;
}

void Test()
{
    unsigned char** palette = GeneratePalette();
    IppiSize srcSize = { 2,1 };
    float src[2] = { 54, 19 };
    unsigned char truncated[2];

    IPPCALL(ippiConvert_32f8u_C1R)(src, srcSize.width * sizeof(float), truncated, srcSize.width * sizeof(unsigned char), srcSize, ippRndZero);
    unsigned char copied[6] = {0};
    IPPCALL(ippiGrayToRGB_8u_C1C3R)(truncated, srcSize.width * sizeof(unsigned char), copied, srcSize.width * sizeof(unsigned char) * 3, srcSize);
    unsigned char dest[6];

    IPPCALL(ippiLUTPalette_8u_C3R)(copied, 6, dest, 6, srcSize, palette, 8);
}

int main()
{
    Test();
    return 0;
}