6

我正在使用自定義圖像集來訓練使用Tensorflow API的神經網絡。成功的訓練過程後,我得到這些檢查點文件包含不同訓練變量的值。我現在想從這些檢查點文件中獲得一個推理模型,我發現這樣做,然後我可以使用它來生成deepdream圖像,如本教程中所述。問題是,當我使用加載我的模型:如何使用Tensorflow推理模型生成類似於圖像的深水圖像

import tensorflow as tf 
model_fn = 'export' 

graph = tf.Graph() 
sess = tf.InteractiveSession(graph=graph) 
with tf.gfile.FastGFile(model_fn, 'rb') as f: 
    graph_def = tf.GraphDef() 
    graph_def.ParseFromString(f.read()) 
t_input = tf.placeholder(np.float32, name='input') 
imagenet_mean = 117.0 
t_preprocessed = tf.expand_dims(t_input-imagenet_mean, 0) 
tf.import_graph_def(graph_def, {'input':t_preprocessed}) 

我得到這個錯誤:

graph_def.ParseFromString(f.read())

self.MergeFromString(serialized)

raise message_mod.DecodeError('Unexpected end-group tag.') google.protobuf.message.DecodeError: Unexpected end-group tag.

腳本期望的協議緩衝文件,我不知道該script我使用生成的推理模型給我原型緩衝區文件或不。

有人可以請建議我做錯了什麼,或者有更好的方法來實現這一點。我只是想將由張量生成的檢查點文件轉換爲proto緩衝區。

感謝

回答

1

的鏈接腳本,你跑壞了,但在任何情況下,推薦的就是不要試圖生成一個檢查點的推理模型,而是在你的訓練結束嵌入代碼程序會發出一個「SavedModel」導出(與檢查點相同的是而不是)。

請參閱[1],特別是標題爲「建立保存的模型」。請注意,保存的模型構成多個文件,其中一個確實是一個協議緩衝區(直接回答您的問題,我希望);其他的是可變文件和(可選)資產文件。

[1] https://www.tensorflow.org/programmers_guide/saved_model

相關問題