Tensorflow 迫使keras评估

Tensorflow 迫使keras评估,tensorflow,keras,Tensorflow,Keras,我正在使用cifar10_cnn.py并修改它,以便生成自己的内核。(尝试一个新想法)。我的代码像往常一样设置序列,编译模型,然后用显式python代码生成CNN内核,并将它们复制到模型中。接下来我在一张图像上调用model.predict,效果很好。 像 印刷张量永远不会发生。文档中有一个注释,即以后必须“使用”print_tensor的返回值,以获得要在计算图中执行的print_tensor。我试着把n=prt[0,0]放进去,但那没有任何作用,可能是因为n从未被使用过 如何强制变量“使用”

我正在使用cifar10_cnn.py并修改它,以便生成自己的内核。(尝试一个新想法)。我的代码像往常一样设置序列,编译模型,然后用显式python代码生成CNN内核,并将它们复制到模型中。接下来我在一张图像上调用model.predict,效果很好。 像

印刷张量永远不会发生。文档中有一个注释,即以后必须“使用”print_tensor的返回值,以获得要在计算图中执行的print_tensor。我试着把n=prt[0,0]放进去,但那没有任何作用,可能是因为n从未被使用过


如何强制变量“使用”

好的,在对Tensorflow进行了大量研究和一般性工作之后,我意识到这个问题实际上是试图迫使Tensorflow进入一个程序范式。我们需要将Tensorflow看作一种延迟执行图和函数式语言。它不是C++或C型程序思维。
print('layer_conv2d_2')
for img in x_train:
    print('Image %d of %d' % (imgn, x_train.shape[0]))
    img = np.expand_dims(img, axis=0)
    # t1 is (32,32)
    t1: tf.Tensor = layer_conv2d_1.output[0,:,:,0]
    prt = keras.backend.print_tensor(t1, 'T1 is ')
    a = model.predict(img)
    t2: tf.Tensor = layer_conv2d_1.output[0,:,:,0]
    prt = keras.backend.print_tensor (t2, 'T2 is ')
    pass