2016-12-28 12 views
0

TensorFlowを初めて使用しています。私はトレーニングデータでinception_v3モデルをうまく訓練しました。今私はいくつかの画像の出力を予測したいが、それらの数は訓練のbatch_sizeとは異なる。次のように私はそれをやった:testingのbatch_sizeがトレーニングのbatch_sizeと異なる場合のテンソルフロー復元変数

from tensorflow.contrib.slim.nets import inception_v3 as inception 
checkpoint_dir =os.path.join('runs', configure_name, 'checkpoints') 
checkpoint_file = tf.train.latest_checkpoint(checkpoint_dir) 
graph = tf.Graph() 
with graph.as_default(): 
    session_conf = tf.ConfigProto(
     allow_soft_placement=True, 
     log_device_placement=False) 
    sess = tf.Session(config=session_conf) 
    with sess.as_default(): 
     # Load the saved meta graph and restore variables 
     saver = tf.train.import_meta_graph("{}.meta".format(checkpoint_file)) 
     saver.restore(sess, checkpoint_file) 

     x = tf.placeholder(tf.float32, [batch_size,input_size,input_size,num_channels], name='images') 
     _, end_points = inception.inception_v3(x,num_classes=num_classes, is_training=False) 
     outputs = end_points['Predictions']   

     scores = sess.run(outputs, feed_dict={x: x_eval}) 
     predictions = np.argmax(scores,axis=1) 

次のようにそれは私にエラーを与えた:

FailedPreconditionError: Attempting to use uninitialized value InceptionV3/Conv2d_1a_3x3/weights_1 

「出力」のモデルパラメータが正常に供給されていないようですが、私は方法がわかりませんそれをするために。何か案は?ありがとう。

答えて

0

ここでは、入力プレースホルダx batch_sizeの最初のディムを明示的に設定しています。そのため、numpy.arrayタイプのテンソルを同じdimでフィードする必要があるたびに、プログラムが正しく処理されません。すでに訓練を受けている場合

:このDIMはトレーニングや検証

UPDATE中に任意のintまたは異なることができるように

ソリューションは、任意のプレースホルダ(入力およびラベル)Noneの最初の薄暗いを設定することができます最初の薄いプレースホルダー入力(およびラベル)が固定されたモデルは、tf.train.import_meta_graph(grapg_def=your_graph_def, input_map={'your_train_input_placedholer_name':new_placeholder}) ここでtf.train.import_meta_graph(grapg_def=your_graph_def, input_map={'your_train_input_placedholer_name':new_placeholder})と入力してください。new_placeholderは、固定していない最初のdimで新たに作成するプレースホルダーです。

+0

これは機能します。ありがとう。 –

関連する問題