【问题标题】:Tensorflow basic_rnn_seq2seq TypeError: Expected int32, got -0.1 of type 'float' insteadTensorflow basic_rnn_seq2seq TypeError: Expected int32, got -0.1 of type 'float' 相反
【发布时间】:2016-08-01 09:16:58
【问题描述】:

我正在尝试在数据集上运行编码器-解码器模型。下面是示例代码:

self._input_data = tf.placeholder(tf.int32, [batch_size, num_steps])
self._targets = tf.placeholder(tf.int32, [batch_size, num_steps])
enc_inputs.append(self._input_data) #one batch at once
dec_inputs.append(self._targets)
model = seq2seq.basic_rnn_seq2seq(enc_inputs, dec_inputs, tf.nn.rnn_cell.BasicLSTMCell(size, state_is_tuple=True))

我收到类型不匹配的错误(如下所述)。有谁知道解决这个问题?

tensor_util.py, line 290, in _AssertCompatible
    (dtype.name, repr(mismatch), type(mismatch).__name__))
    TypeError: Expected int32, got -0.1 of type 'float' instead.

【问题讨论】:

  • 似乎,将 tf.int32 更改为 tf.float32 可以解决问题。我不知道为什么,但程序现在可以正常运行了。
  • 当您尝试将浮点值插入已键入为 int32 的张量时会出现类型错误。 tensor_util.py 用于在 python 中构造张量,然后将数据或图形发送到后端客户端执行。从您的问题中不清楚如何重现您的错误。 _input_data 是如何被初始化的?使用包含浮点数的值?
  • encode_input 和 decode_input 是简单的单词 id(整数)。接下来,所有进程都在 basic_rnn_seq2seq API 中处理。

标签: python tensorflow deep-learning lstm


【解决方案1】:

这是一个混淆错误信息的问题。实际原因是,当您调用tf.get_variable() 但没有设置默认初始化程序时,错误消息会令人困惑。您可以使用tf.zero_initializer() 或类似的东西来抑制此错误。

【讨论】:

    【解决方案2】:

    问题的根源在于 Tensorflow rnn_cell.py 类:

    with vs.variable_scope(scope or "Linear"):
        matrix = vs.get_variable("Matrix", [total_arg_size, output_size], dtype=dtype)
    

    您有两个不同类型的变量(tf.int32 和 tf.float32)

    为了解决这个问题,我将 tf.float32 用于编码器和解码器输入,同时将目标保持为 tf.int32(Seq2Seq 模型需要)。

    这样的事情可能会奏效:

    self._input_data = tf.placeholder(tf.float32, [batch_size, num_steps])
    self._targets = tf.placeholder(tf.int32, [batch_size, num_steps])
    enc_inputs.append(self._input_data) #one batch at once
    dec_inputs.append(self._targets)
    

    请注意,该问题已在 TF v0.12.1 上重现。我检查了当前 master 的 rnn_cell.py ,它完全不同。所以我认为这个问题可能会在以后的版本中消失。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-26
      • 2018-10-09
      • 1970-01-01
      • 1970-01-01
      • 2019-03-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多