###训练 num_epochs = 3 for epoch inrange(num_epochs): for X, y in data_iter: ###创建梯度带并跟踪其下的运算,一般把需要求梯度的量放在这下面 with tf.GradientTape() as tape: l = loss(net(X, training=True), y) ###求出l关于w与b分别的梯度,net.trainable_variables包括权重与偏置 grads = tape.gradient(l, net.trainable_variables) ###用优化器更新参数 trainer.apply_gradients(zip(grads, net.trainable_variables)) l = loss(net(features), labels) print(f'epoch {epoch + 1}, loss {l:f}')
###输出 w = net.get_weights()[0] b = net.get_weights()[1] print(w,'\n',b)