if(strpos(fgets($myfile), 'ROTTEN') !== false){
echo "<img src='https://webster.cs.washington.edu/images/rotten.gif' alt='Rotten' />";
}else{
echo "<img src='https://webster.cs.washington.edu/images/fresh.gif' alt='Fresh' />";
};
input_imgs = model.input
loss = K.max(layer_dict[layer_name].output[p[0]])
grads = K.gradients(loss, input_imgs)[0]
我想计算具有fout头输入的暹罗NN的渐变,但是当我应用上面的K函数时,我得到一个形状为iterate = K.function(input_imgs, [grads])
的渐变张量,当我想要的是(1, 3, 227, 227)
时。
我能做些什么来获得正确的渐变?
答案 0 :(得分:0)
我看到你正在尝试生成显着性图。
检查input_imgs tensor的形状。这就决定了渐变的形状。我的猜测是grads = K.gradients(loss, input_imgs)[0]
是一个张量列表,在0
中,因为您正在索引grads = K.gradients(loss, input_imgs)
iterate = K.function(input_imgs, grads)
,所以您将丢弃列表中的所有其他渐变。所以这可能会解决你的问题:
iterate
现在,当您使用(1, 3, 227, 227)
时,它会为您提供每个形状{{1}}