计算损失函数相对于输入的梯度不会给出任何结果

时间:2019-07-29 21:26:20

标签: python keras

我有一个预先训练的keras模型。我希望通过输入张量来计算模型的损失函数的梯度。我的预训练模型是一个生成器,可以从一维输入生成矩阵。我有一个自定义损失函数,该函数使用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)

结果全部为[无]。 您能帮我解决问题吗?

0 个答案:

没有答案
相关问题