用于预测数字输出的自定义损失函数

我希望我的 keras 网络预测 60..200 范围内的数字输出。以我的经验,在这种情况下,仅输出 sigmoid*140+60 或类似的效果非常差,将其转换为类会更好。


但是,我正在努力定义损失函数。显然,预测附近的类会更好,并且应该受到较少的惩罚。


下面的示例代码。网络显然会更复杂,并且可能部分是卷积的,但这只是开始。


当前代码给出错误:“IndexError: only integers, slices ( :), ellipsis ( ...), numpy.newaxis (`None') 和 integer or boolean arrays are valid indexes”。我想这是有道理的,因为反向传播限制了可以做的事情,但我不确定如何正确设计和调试损失函数。


classes = np.array(range(60,200,5))

nc = classes.shape[0]

def myloss(y_true, y_pred):

  pred_class = K.argmax(y_pred,axis=1)

  return K.sqrt( K.sum( K.square( classes[pred_class] - y_true ) ) )


in1 = Input(shape=(77,))

mid = Dense(50, activation='tanh')( in1 ) 

out = Dense(nc, activation='softmax')( mid ) 

model = Model(inputs=in1, outputs=out)

model.add_loss( myloss(sbp, out) )


慕姐8265434
浏览 175回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python