获取ValueError:将gensim.word2vec传递给feed_dict

时间:2019-04-28 03:19:13

标签: tensorflow word2vec seq2seq

我正在使用tensorflow(不是Keras)创建seq2seq模型,并且输入/输出是句子。像聊天机器人或翻译器之类的东西。

但是当我跑步

for epoch in range(total_epoch):
    _, loss = sess.run([optimizer, cost],
                       feed_dict={enc_input: input_batch,
                                  dec_input: output_batch,
                                  targets: target_batch})

我知道

ValueError: setting an array element with a sequence.

input_batch / output_batch是句子gensim.word2vec.wv.vectors的数组。 我也尝试了其他方法作为输入,但是仍然遇到相同的错误。 对于target,它是一个数组数组(每个内部数组都是映射到句子中单词的数字的列表)。

获取错误的target_batch如下所示: [[297, 242, 430, 451, 507, 507, 505, 506, 506, 506, 506, 506], [297, 242, 430, 451, 507, 507, 505, 506, 506, 506, 506, 506], ...]

对于input_batch / output_batch,我已经尝试了一切。

我使用gensim word2vec,对于inputbatch.append(input_data)input_data是使用gensim word2vec为每个句子制作的,如下所示:

model=Word2Vec(input_sentence.split(), size=5, window=10, min_count=1, workers=4, sg=1)

从保存到bin并检索到使用model.wv.vectors,我已经做了所有事情。对于enc_inputdec_inputtargets

的全部3个错误

enc_input = tf.placeholder(tf.float32, [None, None, n_input])

谢谢。

1 个答案:

答案 0 :(得分:0)

似乎您必须将向量张量目标批次的形状与供稿字典app.use(express.static("public"))中的键进行匹配。从documentation for tensorflow Session.py:

  

可选的feed_dict参数允许调用者覆盖   图中张量的值。 feed_dict中的每个键都可以是   以下类型:       如果键是tf.Tensor,则值可能是可以转换为相同dtype的Python标量,字符串,列表或numpy ndarray   作为那个张量。此外,如果密钥是tf.placeholder,则   将检查值的形状是否与   占位符。

占位符必须具有与输入张量兼容的形状。将numpy数组用于目标批次可能更容易,并使用它来设置占位符的尺寸,如下所示:

enc_input, dec_input, targets

没有更多信息,我无法测试,但希望能对您有所帮助。