0

我收到以下错误:

ValueError:无法为形状为 '(1, 117, 5)' 的张量 u'vector_rnn_1/Placeholder_1:0' 提供形状 (1, 251, 5) 的值

从这里运行代码时 https://github.com/tensorflow/magenta-demos/blob/master/jupyter-notebooks/Sketch_RNN.ipynb

此方法出现错误:

def encode(input_strokes):
  strokes = to_big_strokes(input_strokes).tolist()
  strokes.insert(0, [0, 0, 1, 0, 0])
  seq_len = [len(input_strokes)]
  draw_strokes(to_normal_strokes(np.array(strokes)))
  return sess.run(eval_model.batch_z, feed_dict={eval_model.input_data: [strokes], eval_model.sequence_lengths: seq_len})[0]

我不得不提到我按照这里的说明训练了自己的模型:

https://github.com/tensorflow/magenta/tree/master/magenta/models/sketch_rnn

有人可以帮助我理解和解决这个问题吗?

感谢和问候

4

2 回答 2

1

就我而言,问题是由 to_big_strokes() 函数引起的。如果您不修改sketch_rnn/utils.py 中的to_big_stroke(),默认情况下会将input_strokes 序列的长度延长到250。
您需要做的就是修改该函数中的参数max_len。您需要将该值更改为您自己的数据集的最大序列长度,对我来说是 21,如下所示标有“更改”的行。

def to_big_strokes(stroke, max_len=21):  # change: 250 -> 21
  """Converts from stroke-3 to stroke-5 format and pads to given length."""
  # (But does not insert special start token).

  result = np.zeros((max_len, 5), dtype=float)
  l = len(stroke)
  assert l <= max_len
  result[0:l, 0:2] = stroke[:, 0:2]
  result[0:l, 3] = stroke[:, 2]
  result[0:l, 2] = 1 - result[0:l, 3]
  result[l:, 4] = 1
  return result
于 2019-04-09T03:55:35.557 回答
0

问题是笔画大小不等于算法预期的数组大小。所以调整笔画数组解决了这个问题。

于 2019-01-10T19:41:06.003 回答