在python中完成培訓後,使用以下api保存模型:
1234
#將二進制模型output _ graph _ def = TF . graph _ util . convert _ variables _ to _ constants(sess,sess.graph _ def,output _ node _ names =【‘y _ conv _ add‘】保存為f:f . write(output _ graph _ def。SerializeToString())
將其保存為二進制pb文件。主要是output_node_names數組,這個數據的名稱表示要保存的tensorflow tensor的名稱。在python中定義模型時指定的計算操作的名稱。將您填寫的內容保存到任何節點。在cnn模型中,它通常是分類輸出的名稱。
例如,定義模型時,代碼為:
123
y _ conv = TF . add(TF . matmul(h _ fc 1 _ drop,w _ fc2),b _ fc2,name =‘y _ conv _ add‘)# CNN輸出層,name y_conv_add#訓練和評估模型softmax = tf.nn
在java中使用模型時,您需要關心模型的輸入張量和輸出張量名稱,因此在定義模型時,最好為所有輸入張量指定名稱,例如輸入X和dropout名稱。
在java中調用代碼片段:
12345678910111213
public static void main(String【】args){ String labels =“17,16,7,8,3,15,4,14,2,5,12,18,9,10,11,113,6“;tensorflowinterceinterface tfi = new tensorflowinterceinterface(“D:/TF _ mode/output _ graph . Pb“,“imageType“);最終操作Operation = tfi . graph Operation(“y _ conv _ add“);Output輸出= operation . output(0);shape shape = output . shape();final int num classes =(int)shape . size(1);float【】float values = getimage pixel(“D:/TF _ mode/ci/ci/333 . jpg“);//將圖片處理成相應的張量格式//輸入圖片tfi . feed(“x _ Input”,float values,1,2048);//將數據復制到輸入張量x_input,即X名稱TFI。定義模型時運行(new string【】{“y _ conv _ add“},false);//output tensor float【】outputs = new float【num class】;//結果分類tfi . fetch(“y _ conv _添加”,輸出);//接收結果的輸出是預測結果對應的概率,最大的通常是當前預測結果。