ValueError:没有为Keras中的任何变量提供梯度

2024-04-19 15:08:01 发布

您现在位置:Python中文网/ 问答频道 /正文

我发现以下错误:

ValueError:没有为任何变量提供渐变:[“”、“”、“”、“”、“”、“”、“”、“”]。你知道吗

我已经编写了一个定制的损失函数(kl\u loss):

 def tensor_pValue(pnls,pnl):
    vec=tf.contrib.framework.sort(pnls,axis=-1,direction='ASCENDING')
    rank_p=tf.divide(tf.range(0,264.5,1),264.0)
    return tf.gather(rank_p, tf.searchsorted(vec,pnl,side='left'))

def kl_divergence(p, q): 
   epsilon = 0.00001
   p=p+epsilon
   q=q+epsilon
   return tf.reduce_sum(p * tf.log(p/q))

def kl_loss(predicted_pnL,actual_pnl_tensor):
    p_dist=tf.squeeze(tf.map_fn(lambda inp:tensor_pValue(inp[0],inp[1]), 
(predicted_pnL,actual_pnl_tensor),dtype=tf.float32))
    u_dist=tf.random.uniform([264],0,1,dtype=tf.float32)
    return kl_divergence(p_dist,u_dist)

然后我用Keras构建了一个神经网络模型:

optimizer = tf.train.AdamOptimizer(0.001)
input_dim = X_train.shape[1]
model = keras.Sequential([
keras.layers.Dense(UNITS, activation=tf.nn.relu,
                 input_dim=input_dim),
keras.layers.Dense(UNITS, activation=tf.nn.relu),
keras.layers.Dense(264)
])
model.compile(loss=lambda y, f: kl_loss(f,y), optimizer=optimizer)
model.fit(X_train, train_y, epochs=EPOCHS, batch_size=BATCH_SIZE,verbose=0)

我想在我的减肥和体重之间可能有一些联系,因为我的减肥实际上是每批加起来的。你知道吗

有人能帮忙看看这个问题吗?你知道吗

非常感谢!你知道吗


Tags: inputreturndisttfdeftrainkerasoptimizer