我已经在tensorflow上实施并训练了一个resnet模型。 我这样保存了它:
save_path=saver.save(sess,"/home/.../model.ckpt",global_step=50)
saver.save(sess,"/home/s.../model.ckpt",global_step=50)
在另一个脚本上,我尝试加载它并在某些图像上测试它。
我的脚本是这样构建的:
files = [s for s in os.listdir(dossier_source+'/'+d) if s.endswith(".png") or(".jpeg")]
print files.__len__()
batch_size_arg=files.__len__()
x = tf.placeholder(tf.float32, [None,IMAGE_WIDTH,IMAGE_HEIGHT,NUMBER_OF_CHANNELS], name='x-input')
y = tf.placeholder(tf.int32, [None], name='y-input')
train_file =str(dossier_source+d+"/*.png")
我重新创建所有变量[..]
with tf.Session() as sess:
sess.run(tf.local_variables_initializer())
saver=tf.train.Saver()
saver.restore(sess,tf.train.latest_checkpoint(global_path))
tab= sess.run('conv0/conv:0')
print tab[0][0][0] #here is a little test that proves conv0 weights is the same as the ones i get on training
for i in xrange(1):
im_batch, lab_batch = sess.run([images_batch, labels_batch])
curr=sess.run(accuracy,feed_dict={x: im_batch, y: lab_batch})
top=sess.run(top_k_op ,feed_dict={x: im_batch, y: lab_batch})
conf =sess.run(confusion,feed_dict={x: im_batch, y: lab_batch, })
print "Results"
print curr
print conf
我的问题是,即使conv0每次都显示相同的权重,但混淆表和结果在同一图像上的每次测试中都是不同的....
当我加载我的重量和模型时,我做错了吗?
编辑:
通过最新测试,我意识到如果我做了
for i in xrange(3):
im_batch, lab_batch = sess.run([images_batch, labels_batch])
curr=sess.run(accuracy,feed_dict={x: im_batch, y: lab_batch})
top=sess.run(top_k_op ,feed_dict={x: im_batch, y: lab_batch})
conf =sess.run(confusion,feed_dict={x: im_batch, y: lab_batch, })
print "Results"
print curr
print conf
在同一批3张图片上,我得到了不同的结果。