繁体   English   中英

如何在Tensorflow输入管道中根据受过训练的模型进行预测?

[英]How can I make predictions from a trained model inside a Tensorflow input pipeline?

我正在尝试训练一种情绪识别模型,该模型使用VGG图层的输出之一作为输入。

我可以通过第一步运行预测,保存提取的特征,然后将其用作我的网络的输入来管理所需的东西,但是我正在寻找一种可以立即完成整个过程的方法。

第二种模型使用要素地图的级联数组作为输入(我正在处理视频数据),因此无法简单地将其连接到VGG的输出。

我试图通过tf.data.dataset API文档中描述的方式使用map操作:

def trimmed_vgg16():
  vgg16 = tf.keras.applications.vgg16.VGG16(input_shape=(224,224,3))
  trimmed = tf.keras.models.Model(inputs=vgg16.get_input_at(0),
                                  outputs=vgg16.layers[-3].get_output_at(0))
  return trimmed

vgg16 = trimmed_vgg16()

def _extract_vgg_features(images, labels):
    pred = vgg16_model.predict(images, batch_size=batch_size, steps=1)
    return pred, labels

dataset = #load the dataset (image, label) as usual
dataset = dataset.map(_extract_vgg_features)

但是我遇到了这个错误: Tensor Tensor("fc1/Relu:0", shape=(?, 4096), dtype=float32) is not an element of this graph它是非常明确的。 我被困在这里,因为我看不到在同一张图中插入训练好的模型并“即时”获得预测的好方法。

有一种干净的方法可以做到这一点吗?

编辑:错过了一行。
Edit2:添加了详细信息

您应该能够通过首先创建vgg16 ,然后像这样检索模型的输出来连接各层,然后可以将该张量用作您自己的网络的输入。

vgg16 = tf.keras.applications.vgg16.VGG16(input_shape=(224,224,3))

network_input = vgg16.get_input_at(0)
vgg16_out = vgg16.layers[-3].get_output_at(0) # use this tensor as input to your own network

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM