【发布时间】:2023-04-05 08:13:01
【问题描述】:
在 tensorflow 2.0 中,输入张量需要在调用时馈送,而不是在构造时馈送。我正在尝试将 dynamic_decode 用于 seq2seq 任务。我如何使用 dynamic_decode 并通过 1 行代码获取输出,而不是手动处理 initialize() 然后 step() 时间步长。在 tf 1.14 中,您可以将 initial_state 张量传递给构造函数。
greedy_sampler = tfa.seq2seq.GreedyEmbeddingSampler()
decoder_input = tf.expand_dims([Y_tokenizer.word_index['<start>']]* inference_batch_size,1)
decoder_emb_inp = decoderNetwork.decoder_embedding(decoder_input)
decoder_instance = tfa.seq2seq.BasicDecoder(decoderNetwork.decoder_rnncell, greedy_sampler)
#initialize inference decoder
(first_finished, first_inputs,first_state) = decoder_instance.initialize(decoder_embedding_matrix,
start_tokens = start_tokens, end_token=end_token, initial_state = s_prev)
final_outputs, final_state, final_sequence_lengths = tfa.seq2seq.dynamic_decode(decoder_instance,
maximum_iterations=maximum_iterations,
)
当我尝试使用 dynamic_decode 时出现以下错误。它找不到 initial_state 张量
52 final_outputs, final_state, final_sequence_lengths = tfa.seq2seq.dynamic_decode(decoder_instance,
---> 53 maximum_iterations=maximum_iterations,
54 )
55
1 frames
/usr/local/lib/python3.6/dist-packages/tensorflow_addons/seq2seq/decoder.py in dynamic_decode(decoder, output_time_major, impute_finished, maximum_iterations, parallel_iterations, swap_memory, training, scope, **kwargs)
333 decoder_init_kwargs = kwargs.pop("decoder_init_kwargs", {})
334 initial_finished, initial_inputs, initial_state = \
--> 335 decoder.initialize(decoder_init_input, **decoder_init_kwargs)
336
337 zero_outputs = tf.nest.map_structure(
/usr/local/lib/python3.6/dist-packages/tensorflow_addons/seq2seq/basic_decoder.py in initialize(self, inputs, initial_state, **kwargs)
69 # Assume the dtype of the cell is the output_size structure
70 # containing the input_state's first component's dtype.
---> 71 self._cell_dtype = tf.nest.flatten(initial_state)[0].dtype
72 return self.sampler.initialize(inputs, **kwargs) + (initial_state,)
73
AttributeError: 'NoneType' object has no attribute 'dtype'
【问题讨论】:
标签: tensorflow2.0 seq2seq