我希望我的 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) )
添加回答
举报
0/150
提交
取消