2

我有一个卷积 Keras 模型,我正在尝试获得一个 TensorFlow 图,该图将为我提供中间激活层,但我没有通过以下方式获得正确的结果:

import skimage.transform as transform
import imageio
import numpy as np

import tensorflow as tf
from keras.applications import VGG16
from keras import models

conv_base = VGG16(weights='imagenet', include_top=False, input_shape=(540, 960, 3))
layer_dict = {layer.name:layer for layer in conv_base.layers}

image = imageio.imread('/home/john/001000.png')
image = transform.resize(image, (540, 960), mode='constant')
image = np.expand_dims(image, axis=0)

#In Keras, I would just do this:
#model = models.Model(inputs=conv_base.input, outputs=layer_dict[layerName])
#prediction = model.predict(image)
#print(np.sum(prediction))

sess = tf.Session()
sess.run(tf.global_variables_initializer())

ans = sess.run(layer_dict['block5_conv2'].output, feed_dict={(conv_base.input): image})
print(np.sum(ans))

我将结果的总和作为快速比较。我认为在 TensorFlow 中初始化变量时,它会重置所有权重,因为我每次都会得到一个随机结果。但是,它也不会让我在没有初始化的情况下运行。我这样做是因为我希望能够在 Go 中执行此操作,所以我尝试先在 Python 中使用 Keras,然后在 Python 中直接使用 TensorFlow,然后在 Go 中使用 TensorFlow。我想如果我可以让它在 TensorFlow 中工作,我可以将它保存到 Python 中的文件中,然后在 Go 中加载它。

4

0 回答 0