【问题标题】:Tensorflow gradients are None ('No gradients provided for any variable')Tensorflow 梯度是 None ('没有为任何变量提供梯度')
【发布时间】:2019-05-26 19:19:40
【问题描述】:

当我运行以下脚本时,我收到错误消息“没有为任何变量提供渐变”。 “grads”变量是“None”值的列表。这么简单的脚本可能出了什么问题?

import tensorflow as tf
import numpy as np
tf.enable_eager_execution()


class Model(tf.keras.Model):
    def __init__(self):
        super(Model, self).__init__()
        self.layer = tf.keras.layers.Dense(4, activation = "linear")

    def call(self, x):
        y = self.layer(x)

        return y

model = Model()
model._set_inputs(tf.zeros((1, 5)))

optimizer = tf.train.GradientDescentOptimizer(0.5)


# gibberish data
x_train = np.array([[0, 0, 0, 0, 1]], dtype=np.float32)
y_train = np.array([[0.1, 0.1, 0.4, 0.4]])

y_pred = model.call(x_train)

with tf.GradientTape() as tape:
    loss = tf.losses.mean_squared_error(y_train, y_pred)

grads = tape.gradient(loss, model.trainable_variables)
optimizer.apply_gradients(zip(grads, model.trainable_variables))

【问题讨论】:

    标签: python tensorflow


    【解决方案1】:

    模型预测线

    y_pred = model.call(x_train)

    必须在 with tf.GradientTape() as tape: 范围内。

    【讨论】:

      猜你喜欢
      • 2018-08-23
      • 1970-01-01
      • 1970-01-01
      • 2020-10-31
      • 2020-09-30
      • 1970-01-01
      • 2021-09-08
      • 2021-04-17
      • 1970-01-01
      相关资源
      最近更新 更多