Keras损失功能如何传递信息

时间:2016-10-27 05:34:46

标签: deep-learning theano keras objective-function

我对keras和DL相当新,我正在尝试建立一个损失函数,但我对如何通过损失函数的y_pred和y_true传递来自网络的数据有疑问。

例如,我的网络有三种不同的输出,其中一种是:

SEC5 = merge( [SEC1_up, SEC2_up, SEC3_up, SEC4_up], mode='concat', concat_axis=1 )

SEC5 = Convolution2D( 2,1,1, subsample=(1, 1), border_mode='same', activation="sigmoid" )( SEC5 )

SEC5现在是一个2通道张量,它预测一个通道的边缘和另一个通道的非边缘。

我的模型使用以下行创建:

model = Model( input=inputs, output=[Final, ILLP2, SEC1, SEC2, SEC3, SEC4, SEC5] )

我在ILLP2上的Final,Squared损失上执行二进制交叉熵,然后在每个SEC层上执行自定义丢失。在建立自定义损失时,我遇到了一些我不了解的事情。多个通道层(如SEC5)如何传递给损失函数?这在我的边缘损失中尤其重要,因为我需要计算边缘层中的边缘数量,以及非边缘层中的非边缘数量。

当我这样做时,我不能理解的是损失函数(y_true和y_pred)中的实际变量:

print 'y_true data'
print y_true.ndim
print y_true.type
print 'y_pred data'
print y_pred.ndim
print y_pred.type

我得到以下值:

y_true data
2
TensorType(float32, matrix)
y_pred data
2
TensorType(float32, matrix)

这就是我对所有事情感到困惑的地方。据我了解,矩阵的张量类型只能是2维,但我基本上有3个维度?它是如何处理这些信息的?

在我自己制作精心设计的丢失功能之前,我觉得我应该理解这一点,非常感谢您提供给我的任何信息。

干杯,

迈克尔

0 个答案:

没有答案