Отбор проб в тензорном потоке

1

Я выбираю точки выборки в каждом изображении, используя следующую функцию. tf.range дает ошибку, если batch_size - None. Как пробовать в тензорном потоке

def sampling(binary_selection,num_points, points):
  """
      binary_selection: tensor of size (batch_size, points) 
          with values 1.0 or 0.0. Indicating positive and negative points. 
          We want to sample num_points from positive points of each image
      points: tensor of size (batch_size, num_points_in_image)
      num_points: number of points to sample for each image
  """
  batch_size = points.get_shape()[0]
  indices = tf.multinomial((tf.log(binary_selection)), num_points)
  indices = tf.cast(tf.expand_dims(indices, axis=2), tf.int32)
  batch_seq = tf.expand_dims(tf.range(batch_size), axis=1) 
  im_indices = tf.expand_dims(tf.tile(batch_seq, [1, num_points]), axis=2) 
  indices = tf.concat([im_indices, indices], axis=2)
  return tf.gather_nd(points, indices)

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

_dimension_tensor_conversion_function raise ValueError("Cannot convert an unknown Dimension to a Tensor: %s" % d) ValueError: Cannot convert an unknown Dimension to a Tensor: ?

Во время теста и времени обучения у меня будет batch_size целое число, но когда я инициализирую, я хочу дать None в качестве входных данных, чтобы размер партии можно было изменять во время теста и времени обучения.

Теги:
tensorflow

2 ответа

1
Лучший ответ

Вы должны batch_size значение batch_size.

Он должен быть инициализирован.

В настоящее время это не дает никакой ценности.

0

Измените batch_size = points.get_shape()[0] на batch_size = tf.shape(points)[0]. Чтобы понять статические и динамические формы, проверьте: как понять статическую форму и динамическую форму в TensorFlow?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню