Tensorflow 需要张量操作的keras(tf后端)中的自定义丢失
我的目标是预测两个点的坐标:[x1,x2]。(2个点的y坐标是固定的)。 除了均方误差Tensorflow 需要张量操作的keras(tf后端)中的自定义丢失,tensorflow,keras,loss-function,Tensorflow,Keras,Loss Function,我的目标是预测两个点的坐标:[x1,x2]。(2个点的y坐标是固定的)。 除了均方误差(xtrue-xpred)**2,我想最小化斜率的误差:大约(1/(x2true-x1true)-1/(x2pred-x1pred))**2 以下是我的实现,它引发了以下错误: 形状必须为秩2,但对于“concat_1”(op:“ConcatV2”)为秩1 输入形状:[?,?],[?],[]。 -- 海关损失 def combo_mse(): def组合损失(y_真,y_pred): 斜率真=1/(y真[:
(xtrue-xpred)**2
,我想最小化斜率的误差:大约(1/(x2true-x1true)-1/(x2pred-x1pred))**2
以下是我的实现,它引发了以下错误:
形状必须为秩2,但对于“concat_1”(op:“ConcatV2”)为秩1
输入形状:[?,?],[?],[]。
--
海关损失
def combo_mse():
def组合损失(y_真,y_pred):
斜率真=1/(y真[:,1]-y真[:,0])
combo\u true=K.concatenate([y\u true,slope\u true])
斜率_pred=1/(y _pred[:,1]-y _pred[:,0])
combo\u pred=K.连接([y\u pred,slope\u pred])
se=K.square(组合预测-组合预测真)
损失=K.平均值(东南,轴=-1)
回波损耗
返回组合损失
如何切片输出张量
y\u true
和y\u pred
,运行一些操作并使用K.concatenate()
创建新的张量以生成新的自定义损失函数?在连接之前,必须更改slope\u true和slope\u pred的形状。下面的代码应该可以工作。原因是你的slope张量
是一维的,而你的y_-true
和y_-pred
张量是二维的。相同维度张量之间允许进行连接操作
def combo_mse():
def combo_loss(y_true, y_pred):
slope_true = 1/( y_true[:, 1] - y_true[:, 0] )
slope_true = tf.reshape(slope_true, (-1, 1))
combo_true = K.concatenate([y_true, slope_true])
slope_pred = 1/( y_pred[:, 1] - y_pred[:, 0] )
slope_pred = tf.reshape(slope_pred, (-1, 1))
combo_pred = K.concatenate([y_pred, slope_pred])
mse = K.square( combo_pred - combo_true)
loss = K.mean(mse, axis=-1)
return loss
return combo_loss