[英]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.