有人可以解释一下tensorflow的eager-mode工作原理。我正在尝试建立一个简单的回归,如下所示:
编辑:我正在更新我的问题,这是我的完整代码,现在问题来自梯度计算,它返回零。我检查了非零的损失值。
import tensorflow as tf
tfe = tf.contrib.eager
tf.enable_eager_execution()
import numpy as np
def make_model():
net = tf.keras.Sequential()
net.add(tf.keras.layers.Dense(4, activation='relu'))
net.add(tf.keras.layers.Dense(1))
return net
def compute_loss(pred, actual):
return tf.reduce_mean(tf.square(tf.subtract(pred, actual)))
def compute_gradient(model, pred, actual):
"""compute gradients with given noise and input"""
with tf.GradientTape() as tape:
loss = compute_loss(pred, actual)
grads = tape.gradient(loss, model.variables)
return grads, loss
def apply_gradients(optimizer, grads, model_vars):
optimizer.apply_gradients(zip(grads, model_vars))
model = make_model()
optimizer = tf.train.AdamOptimizer(1e-4)
x = np.linspace(0,1,1000)
y = x+np.random.normal(0,0.3,1000)
y = y.astype('float32')
train_dataset …Run Code Online (Sandbox Code Playgroud)