我有一个数据集,其中包含各种对象的点数据(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'
我不明白该错误。请帮助某人:)