【发布时间】:2018-04-12 16:02:23
【问题描述】:
我有带有输出的 CNN
[[a,b,c,d,e],[a1,b1,c1,d1,e1]...]
但是,“a”表示其他值所代表的框内某物的得分。
我希望用例如二元交叉熵和 MSE 来计算“a”
在标签中,a 要么为 1(其他值非零),要么为 0(所有其他值也为零)
所以我希望 a 在输出中介于 0 - 1 之间。
我尝试创建自己的损失函数:
def custom_loss(y_true,y_pred):
return K.mean(K.binary_crossentropy(y_true[0], y_pred[0]), axis=-1) + K.mean(K.square(y_pred[1:] - y_true[1:]), axis=-1)
但是它抛出了相当严重的错误,下面的部分是提供最多信息的部分(我认为)
InvalidArgumentError (see above for traceback): Incompatible shapes: [4] vs. [5]
[[Node: loss/predictions_loss/mul = Mul[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:GPU:0"](loss/predictions_loss/Mean_2, _arg_predictions_sample_weights_0_2/_1191)]]
[[Node: loss/mul/_1305 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_12439_loss/mul", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]()]]
什么可能导致这种情况?形状 4 v 5 很奇怪,而 i 输出和输入的形状相同。
有没有办法解决它或解决方法?
感谢您的帮助。
【问题讨论】:
-
你的输出形状是
(samples, 5)还是(samples, boxes 5)? -
(samples,boxes,5) ,至少我认为是,我在 keras 中仍然没有很好地定位,形状打印 (?,15,4)
-
model.summary()中的最后一个形状是什么? -
它的 (none,15,4)
-
对不起,错字,它的 (none,15,5) ,我只有一个输出
标签: python neural-network keras artificial-intelligence conv-neural-network