使用不同样本的批次大小进行培训

时间:2019-10-24 11:12:08

标签: python-3.x 3d training-data

我有一个数据集,其中包含各种对象的点数据(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'

我不明白该错误。请帮助某人:)

0 个答案:

没有答案