小编DoY*_*ate的帖子

TF2 - GradientTape 与 Model.fit() - 为什么 GradientTape 不起作用?

晚上好,

我想使用 tf2 和 Gradient Tape 函数实现一个简单回归问题的玩具示例。使用 Model.fit 它可以正确学习,但使用 GradientTape 也可以做一些事情,但与 model.fit() 相比,损失不会移动。这是我的示例代码和结果。我找不到问题所在。

model_opt = tf.keras.optimizers.Adam() 
loss_fn = tf.keras.losses.MeanSquaredError()
with tf.GradientTape() as tape:
    y = model(X, training=True)
    loss_value = loss_fn(y_true, y)
grads = tape.gradient(loss_value, model.trainable_variables)
model_opt.apply_gradients(zip(grads, model.trainable_variables))

#Results:
42.47433806265809
42.63973672226078
36.687397360178586
38.744844324717526
36.59080452300609
...
Run Code Online (Sandbox Code Playgroud)

这里是 model.fit() 的常规情况

model.compile(optimizer=tf.keras.optimizers.Adam(),loss=tf.keras.losses.MSE,metrics="mse")
...
model.fit(X,y_true,verbose=0)
#Results
[40.97759069299212]
[28.04145720307729]
[17.643483147375473]
[7.575242056454791]
[5.83682193867299]
Run Code Online (Sandbox Code Playgroud)

准确率应该大致相同,但看起来它根本没有学习。输入 X 是张量,y_true 也是。

编辑以进行测试

import pathlib
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import tensorflow as tf …
Run Code Online (Sandbox Code Playgroud)

machine-learning deep-learning tensorflow tensorflow2.0 gradienttape

2
推荐指数
1
解决办法
2614
查看次数