Обучение с размером партии различных образцов - PullRequest
0 голосов
/ 24 октября 2019

У меня есть набор данных, содержащий точечные данные (координаты x, y, z) для различных объектов. Каждый из наборов баллов имеет разное количество баллов. В общем, у меня есть список длиной 525, то есть он имеет 525 наборов точек. Каждый из этих наборов точек имеет различную длину. У меня есть модель, предназначенная для использования этих неупорядоченных наборов точек (PointNet). Теперь я хочу тренировать эту модель. У меня проблема с выяснением того, как обучить эту модель с имеющимся у меня набором данных.

Я попробовал model.fit, используя набор данных, который имеет одинаковое количество точек для каждого объекта, и это работает. После чего я сделал еще один набор данных с различным количеством точек для каждого объекта. Это не удалось. Я использую Tensorflow 1.14.0.

Я попробовал реализацию API более низкого уровня. Что-то вроде:

train_loss = tf.keras.metrics.Mean(name='train_loss')
train_accuracy = tf.keras.metrics.SparseCategoricalAccuracy(name='train_accuracy')
loss_object = tf.keras.losses.SparseCategoricalCrossentropy()

optimizer = tf.keras.optimizers.Adam()

@tf.function
def train_step(x,y):
  with tf.GradientTape() as tape:
  pred = model(x)
  loss = loss_object(y, pred)
  grad = tape.gradient(loss, model.trainable_variables)
  optimizer.apply_gradients(zip(grad, model.trainable_variables))

  train_loss(loss)
  train_accuracy(y, pred)

EPOCHS = 10

for i in range(EPOCHS):
  for x,y in zip(X_new,Y):
    train_step(x,y)
template = 'Epoch {}, Loss: {}, Accuracy: {}'
print(template.format(i+1, train_loss.result(), train_accuracy.result()*100))

train_loss.reset()
train_accuracy.reset()

Ожидаемый результат - список прогнозов (проблема классификации). Я получаю сообщение об ошибке: AttributeError: в преобразованном коде:

<ipython-input-12-9d980c4ffb08>:6 train_step *
    grad = tape.gradient(loss, model.trainable_variables)

AttributeError: 'Model' object has no attribute 'trainable_variables'

Я не понимаю ошибку. Пожалуйста, помогите кому-нибудь:)

...