KERAS中自己的损失函数

时间:2017-07-16 11:54:37

标签: tensorflow computer-vision deep-learning keras

  1. 如何定义自己的损失函数,该函数需要Keras中先前图层的权重和偏差参数?

  2. 如何从每一层获得[W1,b1,W2,b2,Wout,bout]?在这里,我们需要传递比平常更多的变量(y_true,y_pred)。我附上了两张图片供您参考。

  3. 我需要实现这个损失功能。 enter image description here

    enter image description here

1 个答案:

答案 0 :(得分:0)

为了回答你的第二部分,我使用以下代码来获取模型中每个图层的标准以用于可视化目的:

for layer in model.layers:
    if('Convolution' in str(type(layer))):
        i+=1
        layer_weight = []
        for feature_map in layer.get_weights()[0]:
            layer_weight.append(linalg.norm(feature_map) / np.sqrt(np.prod(feature_map.shape)))
        l_weights.append((np.sum(layer_weight)/len(layer_weight), layer.name, i))
        weight_per_layer.append(np.sum(layer_weight)/len(layer_weight))
        conv_weights.append(layer_weight)

现在在损失函数中使用它我会尝试这样的事情:

def get_loss_function(weights):
   def loss(y_pred, y_true):
       return (y_pred - y_true) * weights # or whatever your loss function should be
   return loss
model.compile(loss=get_loss_function(conv_weights), optimizer=SGD(lr=0.1))