Sketch_RNN,ValueError:无法提供形状值

问题描述 投票:0回答:2

我收到以下错误:

ValueError:无法为Tensor u'vector_rnn_1 / Placeholder_1:0'提供形状值(1,251,5),其形状为'(1,117,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

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

感谢和问候

tensorflow magenta
2个回答
0
投票

问题是笔划大小不等于算法预期的阵列大小。因此,调整笔画数组可以解决问题。


0
投票

对于我的情况,问题是由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
© www.soinside.com 2019 - 2024. All rights reserved.