我在视频游戏数据集上训练了CARCA(Context and Attribute-Aware Sequential Recommendation via Cross-Attention)。我保存了1个epoch后的会话,并尝试恢复会话,因为所有的架构都是使用会话的概念编写的。我使用tf.train.Saver()
.save()
方法保存了会话。
session_saver = tf.train.Saver(save_relative_paths=True)
session_output_path = os.path.join(args.output_dir, "epochs_"+str(epoch))
if not os.path.isdir(session_output_path):
os.makedirs(session_output_path)# make directory if not exists
session_saver.save(sess, session_output_path+"/carca_model")
print(f"[INFO]: Save the model after epochs: {epoch}")
字符串
然后,我使用以下命令恢复会话:
saver = tf.train.import_meta_graph(session_dir +"carca_model.meta")
saver.restore(sess, tf.train.latest_checkpoint(session_dir))
型
我尝试使用恢复的会话会话对新数据集进行预测,但我遇到了Attempting to use uninitialized value error
。完整的错误是:
Traceback (most recent call last):
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1356, in _do_call
return fn(*args)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1341, in _run_fn
options, feed_dict, fetch_list, target_list, run_metadata)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1429, in _call_tf_sessionrun
run_metadata)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value num_blocks_2/multihead_attention/conv1d_1/kernel_1
[[{{node num_blocks_2/multihead_attention/conv1d_1/kernel_1/read}}]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "CARCA_train.py", line 1441, in <module>
get_load_model_and_inference(dataset, usernum, itemnum, args, ItemFeatures, UserFeatures, CXTDict)
File "CARCA_train.py", line 1317, in get_load_model_and_inference
predictions = -model.predict(sess, np.ones(args.maxlen)*u, [seq], item_idx, [seqcxt], testitemscxt)
File "CARCA_train.py", line 976, in predict
{self.test_user: u, self.input_seq: seq, self.test_item: item_idx, self.is_training: False, self.seq_cxt:seqcxt, self.test_item_cxt:testitemcxt})
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 950, in run
run_metadata_ptr)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1173, in _run
feed_dict_tensor, options, run_metadata)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1350, in _do_run
run_metadata)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1370, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.FailedPreconditionError: Attempting to use uninitialized value num_blocks_2/multihead_attention/conv1d_1/kernel_1
[[node num_blocks_2/multihead_attention/conv1d_1/kernel_1/read (defined at CARCA_train.py:670) ]]
Original stack trace for 'num_blocks_2/multihead_attention/conv1d_1/kernel_1/read':
File "CARCA_train.py", line 1441, in <module>
get_load_model_and_inference(dataset, usernum, itemnum, args, ItemFeatures, UserFeatures, CXTDict)
File "CARCA_train.py", line 1266, in get_load_model_and_inference
model = Model(usernum, itemnum, args, ItemFeatures, UserFeatures, cxt_size = cxt_size ,use_res = True)
File "CARCA_train.py", line 768, in __init__
dropout_rate=args.dropout_rate, is_training=self.is_training)
File "CARCA_train.py", line 670, in feedforward
outputs = tf.layers.conv1d(**params)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py", line 324, in new_func
return func(*args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/layers/convolutional.py", line 218, in conv1d
return layer.apply(inputs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1479, in apply
return self.__call__(inputs, *args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/layers/base.py", line 537, in __call__
outputs = super(Layer, self).__call__(inputs, *args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 591, in __call__
self._maybe_build(inputs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1881, in _maybe_build
self.build(input_shapes)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/keras/layers/convolutional.py", line 165, in build
dtype=self.dtype)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/layers/base.py", line 450, in add_weight
**kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/keras/engine/base_layer.py", line 384, in add_weight
aggregation=aggregation)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/training/tracking/base.py", line 663, in _add_variable_with_custom_getter
**kwargs_for_getter)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 1496, in get_variable
aggregation=aggregation)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 1239, in get_variable
aggregation=aggregation)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 562, in get_variable
aggregation=aggregation)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 514, in _true_getter
aggregation=aggregation)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 929, in _get_single_variable
aggregation=aggregation)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 259, in __call__
return cls._variable_v1_call(*args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 220, in _variable_v1_call
shape=shape)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 198, in <lambda>
previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variable_scope.py", line 2511, in default_variable_creator
shape=shape)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 263, in __call__
return super(VariableMetaclass, cls).__call__(*args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 1568, in __init__
shape=shape)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/variables.py", line 1755, in _init_from_args
self._snapshot = array_ops.identity(self._variable, name="read")
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/util/dispatch.py", line 180, in wrapper
return target(*args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/array_ops.py", line 86, in identity
ret = gen_array_ops.identity(input, name=name)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/ops/gen_array_ops.py", line 4253, in identity
"Identity", input=input, name=name)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 3616, in create_op
op_def=op_def)
File "/home/zakipoint/miniconda3/envs/sequential_recommendation_carca/lib/python3.7/site-packages/tensorflow/python/framework/ops.py", line 2005, in __init__
self._traceback = tf_stack.extract_stack()
型
我还检查了存储会话和训练后会话中的变量。两个输出似乎相似。我被这个问题卡住了几天,也测试了使用tf.saved_model.builder.SavedModelBuilder()
保存模型和使用tf.saved_model.loader.load()
恢复模型,但没有解决这个问题。目前,我使用tensorflow 1.14
。谢谢你,谢谢
1条答案
按热度按时间b1zrtrql1#
您似乎正在使用较旧的TF版本。不推荐使用tf.train.Saver,而改用tf.train.Checkpoint。
请从所附要点中找到警告
警告:tensorflow:Saver已弃用,请切换到tf.train.Checkpoint或tf.keras.Model.save_weights获取训练检查点。当急切地执行时,变量不一定有唯一的名称,因此Saver执行的基于变量名的查找容易出错。
你有没有尝试过使用最新的tensorflow API来实现这个功能。在最新的API中,我可以帮助你找出问题所在。