Image 关于使用预先训练的IM2Text模型
从这里开始,我已经走了每一步 但是我得到了以下错误 NotFoundError(回溯见上文):在检查点文件/home/asadmahmood72/Image\u to_text/models/im2text/model.ckpt-300000中未找到张量名称“lstm/basic\lstm\u cell/bias” [[Node:save/RestoreV2_380=RestoreV2[dtypes=[DT_FLOAT],[u device=“/job:localhost/replica:0/task:0/cpu:0”]([u arg_save/Const_0_0,save/RestoreV2_380/tensor_name,save/RestoreV2_380/shape_和_切片)]] 我的操作系统是UBUNTU 16.04Image 关于使用预先训练的IM2Text模型,image,machine-learning,tensorflow,Image,Machine Learning,Tensorflow,从这里开始,我已经走了每一步 但是我得到了以下错误 NotFoundError(回溯见上文):在检查点文件/home/asadmahmood72/Image\u to_text/models/im2text/model.ckpt-300000中未找到张量名称“lstm/basic\lstm\u cell/bias” [[Node:save/RestoreV2_380=RestoreV2[dtypes=[DT_FLOAT],[u device=“/job:localhost/replica:0/t
我的tensorflow版本是1.2.0,看起来tensorflow API又变了,这使得它与检查点模型不兼容。我在文章中使用了tensorflow 0.12.1。如果tensorflow 0.12.1有效,您可以试用吗?否则,您将不得不亲自培训模型(代价高昂),或者查找使用更新版本的tensorflow生成的检查点文件…看起来tensorflow API再次更改,这使得它与检查点模型不兼容。我在文章中使用了tensorflow 0.12.1。如果tensorflow 0.12.1有效,您可以试用吗?否则,您将不得不自己训练模型(代价高昂),或者找到一个由更新版本的tensorflow生成的检查点文件…这有点晚了,但希望这个答案能帮助未来遇到这个问题的人 正如Edouard所提到的,这个错误是由于Tensorflow API中的一个更改引起的。如果您想使用更新版本的Tensorflow,我知道有几种方法可以“更新”您的检查点:
OLD_CHECKPOINT_FILE = "model.ckpt-1000000"
NEW_CHECKPOINT_FILE = "model2.ckpt-1000000"
import tensorflow as tf
vars_to_rename = {
"lstm/basic_lstm_cell/weights": "lstm/basic_lstm_cell/kernel",
"lstm/basic_lstm_cell/biases": "lstm/basic_lstm_cell/bias",
}
new_checkpoint_vars = {}
reader = tf.train.NewCheckpointReader(OLD_CHECKPOINT_FILE)
for old_name in reader.get_variable_to_shape_map():
if old_name in vars_to_rename:
new_name = vars_to_rename[old_name]
else:
new_name = old_name
new_checkpoint_vars[new_name] = tf.Variable(reader.get_tensor(old_name))
init = tf.global_variables_initializer()
saver = tf.train.Saver(new_checkpoint_vars)
with tf.Session() as sess:
sess.run(init)
saver.save(sess, NEW_CHECKPOINT_FILE)
我使用了选项2,加载我的检查点之后效果很好。这有点晚了,但希望这个答案能帮助未来遇到这个问题的人 正如Edouard所提到的,这个错误是由于Tensorflow API中的一个更改引起的。如果您想使用更新版本的Tensorflow,我知道有几种方法可以“更新”您的检查点:
OLD_CHECKPOINT_FILE = "model.ckpt-1000000"
NEW_CHECKPOINT_FILE = "model2.ckpt-1000000"
import tensorflow as tf
vars_to_rename = {
"lstm/basic_lstm_cell/weights": "lstm/basic_lstm_cell/kernel",
"lstm/basic_lstm_cell/biases": "lstm/basic_lstm_cell/bias",
}
new_checkpoint_vars = {}
reader = tf.train.NewCheckpointReader(OLD_CHECKPOINT_FILE)
for old_name in reader.get_variable_to_shape_map():
if old_name in vars_to_rename:
new_name = vars_to_rename[old_name]
else:
new_name = old_name
new_checkpoint_vars[new_name] = tf.Variable(reader.get_tensor(old_name))
init = tf.global_variables_initializer()
saver = tf.train.Saver(new_checkpoint_vars)
with tf.Session() as sess:
sess.run(init)
saver.save(sess, NEW_CHECKPOINT_FILE)