Sketch_RNN, ValueError: невозможно передать значение фигуры - PullRequest
0 голосов
/ 10 января 2019

Я получаю следующую ошибку:

ValueError: Невозможно передать значение формы (1, 251, 5) для Tensor u’vector_rnn_1 / Placeholder_1: 0 ', который имеет форму' (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

Может ли кто-нибудь помочь мне понять и решить эту проблему?

Спасибо Привет

Ответы [ 2 ]

0 голосов
/ 09 апреля 2019

В моем случае проблема вызвана функцией to_big_strokes (). Если вы не измените to_big_stroke () в sketch_rnn / utils.py, он по умолчанию продолжит последовательность 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
0 голосов
/ 10 января 2019

Проблема заключалась в том, что размер штрихов не равен размеру массива, ожидаемого алгоритмом. Таким образом, адаптация массива штрихов устранила проблему.

...