転送学習タスクのためにネットワーク経由で画像を渡したいと思っています。次のコードでは、グラフを作成してから、完全に接続されたレイヤの出力を取得しています。 20k画像以上の配列を持っているので、出力をバッチで取得したいと思っていました。TensorFlow-Slim VGG Pre-Trained Netを通して画像を渡すにはどうすればいいですか?
vgg.vgg_16(images)
は、画像の配列である必要があります。images
私は入力プレースホルダ(docsを見て)にフィードを試みましたが、チェックポイントをロードするときにエラーThere are no variables to save
がありました。
私は一度にいくつかの画像を供給することができますが、各バッチに対してチェックポイントをロードする必要があります。私はそれを行うためのより良い方法があると確信しています。私が見ることができる例や参考文献はありますか?
from tensorflow.contrib import slim
from tensorflow.contrib.slim.nets import vgg
images = np.array(read_images(val_filenames[:4], 224, 224), dtype=np.float32) # load images and resize to 224 x 224
vgg_graph = tf.Graph()
with vgg_graph.as_default():
with slim.arg_scope(vgg.vgg_arg_scope()):
outputs, end_points = vgg.vgg_16(images, is_training=False)
fc6 = end_points['vgg_16/fc6']
with tf.Session(graph=vgg_graph) as sess:
saver = tf.train.Saver()
saver.restore(sess, 'checkpoints/vgg_16.ckpt')
# pass images through the network
fc6_output = sess.run(fc6)
私もthisとthis参照を試みたが、私は答えを見つけることができませんでした。
私は 'とValueErrorを取得していない:セーバーオブジェクトを作成するときにsave'にノーと変数を。画像自体の代わりにプレースホルダを入力するときにグラフを構築できないように見えます。私はtensorflow v1.2.0を実行しています。 –
ここでファイルを確認してください:https://drive.google.com/open?id=0BwoPpNIm4bJqcUR5MTIxV1pKa28 –
この例をありがとうございます。私は、グラフスコープの外に 'image'プレースホルダを作成していることに気付きました。だから、Saverは何の変数も見つけられませんでした。それを動かすと問題は解決した。 –