【问题标题】:Tensorflow: TypeError: helper must be a Helper, received: <class 'helper.GreedyEmbeddingHelper'>Tensorflow: TypeError: helper must be a Helper, received: <class 'helper.GreedyEmbeddingHelper'>
【发布时间】:2017-06-19 03:04:01
【问题描述】:

您好,我正在尝试使用 GreedyEmbeddingHelper 创建 BasicDecoder,但它给出了错误:

TypeError: helper must be a Helper, received: <class 'helper.GreedyEmbeddingHelper'>

这是我的代码的简化版本:

        elif self.mode == 'decode':

            # Start_tokens: [batch_size,] `int32` vector
            start_tokens = tf.ones([self.batch_size, self.dimension], tf.float32) * 0.1337
            end_token = 0.1337

            def project_inputs(inputs):
                print inputs.shape
                return input_layer(inputs)

            if not self.use_beamsearch_decode:
                # Helper to feed inputs for greedy decoding: uses the argmax of the output
                decoding_helper = helper.GreedyEmbeddingHelper(start_tokens=start_tokens,
                                                                end_token=end_token,
                                                                embedding=project_inputs)
                # Basic decoder performs greedy decoding at each time step
                print("building greedy decoder..")
                inference_decoder = seq2seq.BasicDecoder(cell=self.decoder_cell,
                                                         helper=decoding_helper,
                                                         initial_state=self.decoder_initial_state,
                                                         output_layer=output_layer)
            else:
                # Beamsearch is used to approximately find the most likely translation
                print("building beamsearch decoder..")
                inference_decoder = beam_search_decoder.BeamSearchDecoder(cell=self.decoder_cell,
                                                           embedding=project_inputs,
                                                           start_tokens=start_tokens,
                                                           end_token=end_token,
                                                           initial_state=self.decoder_initial_state,
                                                           beam_width=self.beam_width,
                                                           output_layer=output_layer,)

我不知道如何解决它,因为 Helper 是一个抽象类。所以这是不可能的。

【问题讨论】:

标签: python tensorflow deep-learning lstm


【解决方案1】:

GreedyEmbeddingHelper 在 tf.contrib.seq2seq.GreedyEmbeddingHelper 中定义。 所以不要使用helper.GreedyEmbeddingHelper,而是使用tf.contrib.seq2seq.GreedyEmbeddingHelper

【讨论】:

    猜你喜欢
    • 2022-07-09
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 1970-01-01
    • 1970-01-01
    • 2022-07-27
    相关资源
    最近更新 更多