首页 > 解决方案 > 当最小化损失时,变量 ['Variable:0'] 不存在张量流梯度

问题描述

我是python的新手。我想估计大约三个coefficeints。我写下了下面的代码。我省略了一些关于一些数据的代码,这意味着两个变量,例如增长和年龄。我使用了 tensorflow、numpy 和 sklearn 等。

没有错误消息,但我收到警告信号。哪种情况会导致以下消息?我该如何解决这个问题?

a=df4['growth']
b=df4['age']

y=np.array(a.values.tolist())
X=np.array(b.values.tolist())

fig = plt.figure(figsize=(10,10))
plt.plot(X, y, "o")

import tensorflow as tf
import numpy as np
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt
import scipy.stats as stats

import random

a=tf.Variable(random.random())
b=tf.Variable(random.random())
c=tf.Variable(random.random())
#d=tf.Variable(random.random())
from sklearn.metrics import classification_report
def compute_loss():
    y_pred = a + (b * X * np.exp(-c*X))
    loss=tf.reduce_mean((y-y_pred) **2)
    return loss

def accuracy():
  y_pred = a + (b * X * np.exp(-c*X))
  r2=r2_score(y, y_pred)
  return r2

def accuracy2():
  y_pred = a + (b * X * np.exp(-c*X))
  rmse=mean_squared_error(y, y_pred)**0.5
  return rmse  
optimizer = tf.keras.optimizers.SGD(lr=0.01, momentum=0.0, decay = 0.0, nesterov=False)

for i in range(10000):
    optimizer.minimize(compute_loss, var_list=[a, b, c])
    if i % 10000 == 9999:
       print(i, 'a:', a.numpy(), 'b:', b.numpy(), 'c:', c.numpy(),'loss:', compute_loss().numpy(), 'r2:', accuracy(), 'rmse:', accuracy2())


WARNINIG: tensorflow: gradients do not exist for variables ['Variable:0'] when minimuzing the loss

标签: tensorflow

解决方案


推荐阅读