tensorflow 没有提供自定义损失的梯度

时间:2021-03-15 23:32:19

标签: tensorflow

我使用 TensorFlow 构建了一个模型。

def customLoss( pay, n, tau):
    def loss(y_pred):    
        return tf.math.reduce_mean(-pay[:,n]*y_pred- pay[np.arange(len(pay)),tau]*(1-y_pred))
    return loss    
def make_model( pay, n, tau):
    model = Sequential()    
    model.add(Dense(140,kernel_initializer='glorot_normal' ))
    model.add( BatchNormalization())
    model.add(Activation("relu"))  
    model.add(Dense(140,kernel_initializer='glorot_normal' ))
    model.add( BatchNormalization())
    model.add(Activation("relu"))   
    model.add(Dense(1 ,kernel_initializer='glorot_normal' ))
    model.add( BatchNormalization())
    model.add(Activation("sigmoid"))
    model.compile(loss=customLoss( pay, n, tau), optimizer= keras.optimizers.Adam(learning_rate=0.01))    #meaning of parameters : check additional
    return model
X= np.array(....) #shape (M,N)
pay =np.array(....) #shape (M,N)
model = make_model( pay, 1, 2)
model.fit(X,epochs=2, batch_size=10, verbose=1)

现在当我运行它时,它输出 ' ValueError: No gradients provided for any variable'

有人可以帮忙吗?

0 个答案:

没有答案