计算损失函数相对于输入的梯度给出了不确定的结果

2024-04-18 23:46:10 发布

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

我有一个经过训练的凯拉斯模型。我想用输入张量计算模型损失函数的梯度。我的预训练模型是一个生成器,它从一维输入生成一个矩阵。我有一个自定义的损失函数,它使用3个输入来计算损失

BATCH_SIZE=64
g=generator(shape=[100])# g is my pretrained network 
z = Input(shape=[100])
val_inc=Input(shape=(127,8,1))
mask=Input(shape=(127,8,1))
def loss(mask,g,val_inc,z):
  w=mask*g.predict(z)
  q=mask*val_inc
  x=w-q
  return  K.sum(K.abs(x))
for idx in range(0, 100):
    batch_images = val_inc[index*BATCH_SIZE:(index+1)*BATCH_SIZE]
    batch_mask = mask[index*BATCH_SIZE:(index+1)*BATCH_SIZE]
    zhats = np.random.uniform(-1, 1, size=(BATCH_SIZE, 100))  
    x=loss(batch_mask,g,batch_images,zhats)    
    gradients=K.gradients(x,zhats)          
    print(gradients)

结果都是[无]。 你能帮我解决这个问题吗


Tags: 函数模型inputsizeindexbatchmaskval