0
我有一個Tensorflow模型在Python中訓練並且使用freeze_graph
腳本進行凍結。我已經用C++成功加載了模型,並對單個圖像進行了推理。但是,似乎freeze_graph一次只將批量設置爲單個圖像,因爲我無法將模型張量傳遞給多個圖像。當使用Tensorflows時,使用大於1的批處理大小C++ API
有沒有人知道改變這種方式?我一直無法找到腳本實際發生的位置。
謝謝!
編輯:
好了,所以我報廢Keras只是爲了消除任何黑色魔力,可能會做的,我定義與Tensorflow網絡時設置16的批量大小。
如果我DEF打印圖形,佔位符的形狀:
node {
name: "inputs"
op: "Placeholder"
attr {
key: "dtype"
value {
type: DT_FLOAT
}
}
attr {
key: "shape"
value {
shape {
dim {
size: 16
}
dim {
size: 50
}
dim {
size: 50
}
dim {
size: 3
}
}
}
}
}
然而,當我試圖加載並與形狀16×50×50×3的張量運行在C++模型,我得到這個錯誤:
tensorflow/core/framework/tensor.cc:433] Check failed: 1 == NumElements() (1 vs. 16)Must have a one element tensor
當我凍結圖表時,某處必須發生什麼?
'freeze_graph'不會'設置'模型的批量大小。您如何在原始模型中輸入輸入信息? – keveman
我已經使用Keras構建了模型,我相信它使用默認的可變批量。這讓我假設'freeze_graph'必須在尺寸可變的佔位符的情況下做一些事情,但我可能是錯的。有沒有一種方法可以檢查佔位符的形狀實際上是什麼? – ppries
您可以嘗試使用'graph.as_graph_def()'以文本形式打印圖形,並查看佔位符是否設置了形狀屬性。 – keveman