如何使用keras后端

时间:2017-08-11 16:31:36

标签: python tensorflow keras

我正在keras中建立CNN,用于电子显微镜图像中的对象标记作为轮廓。标记的轮廓占图像的一小部分。输出是一个掩码,其中有一个标记对象的轮廓。

我需要编写自己的损失函数。我的想法是首先在y_pred和y_test上应用高斯模糊。这样,轮廓的绝对重叠不需要被认为是真正的正面。

blurring_kernel = np.array(( 1, 1, 1, 1, 3, 1, 1, 1, 1 ), dtype = "float32").reshape((3, 3))
blurring_kernel /= blurring_kernel.sum()

def loss(y_true, y_pred):
    #Apply Convolution bluring on y_true here
    #Apply Convolution bluring on y_true here
    y_true_f = K.flatten(y_true);
    y_pred_f = K.flatten(y_pred);
    intersection = K.sum(y_true_f * y_pred_f);
    return  -intersection / K.sum(y_true_f*y_true_f + y_pred_f*y_pred_f)

我从keras后端尝试了conv2d,但遇到了

ValueError: len(dilation_rate)=2 but should be 1

我还尝试将y_pred andy_test与numpy内核相乘,但这显然是一次绝望的尝试,因为它们是不同的对象。

我仍然认为解决方案是使用来自keras后端的conv2d,但我没有使用它的经验,而且文档没有帮助。

0 个答案:

没有答案