簡體   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