没有为具有随机数据和适当模型构造的任何变量提供梯度

No gradients provided for any variable with random data and proper model construction

import tensorflow as tf

length = 500
data = tf.transpose([range(length),
                     tf.random.uniform([length], minval=0, maxval=2, dtype=tf.int32)])

dataset = tf.data.Dataset.from_tensor_slices(data)
dataset.shuffle(length)

train_length = int(length / 5 * 4)
train_data = dataset.take(train_length)
test_data = dataset.skip(train_length)

model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(10, activation='relu'))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['binary_accuracy'], run_eagerly=True)
model.fit(train_data.batch(10), validation_data=test_data.batch(10), epochs=10)

为什么会报错

ValueError: No gradients provided for any variable: ['dense/kernel:0', 'dense/bias:0', 'dense_1/kernel:0', 'dense_1/bias:0'].

我只是想使用一些随机数据来训练模型以学习tensorflow。我该如何修复代码?

OP 代码中的数据集形状不正确。我会建议在 model.fit

之前添加以下检查
assert isinstance(train_data.element_spec, tuple) and len(train_data.element_spec) > 0, \
    'When x is dataset, its members must be a tuple of either (inputs, targets) or (inputs, targets, sample_weights). Currently your tuple size is 0.'

您的代码因断言而失败,因为数据集中的示例是一个元素而不是两个。

最小的变化是创建这样的数据集

dataset = tf.data.Dataset.from_tensor_slices((features, labels))