tensorflow - 当最小化损失时,变量 ['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
解决方案
推荐阅读
- elasticsearch - Logstash 文件输入未写入 AWS EC2 上的 Elasticsearch 安装
- flutter - 如何设置 ChangeNotifier 以加载语言环境文件
- r - igraph 中代表最多的 10 个节点的子图
- sass - 我正在尝试使用 Foundation scss 建立一个新网站,但是,每次我尝试运行 sass 时都会出现此错误
- jenkins - Bitbucket webhook 正在触发存储库的所有 Jenkins 作业?
- java - Java中冗长的字符串压缩/解压缩
- kubernetes - GKE 外部负载均衡器配置,NEG 为空,运行状况检查不起作用
- java - 如何读取位于计算机上任何位置的文件?
- python - 在熊猫的另一列下方添加一整列数据
- python - 长数据格式的时差