我正在处理一个特定的问题,我需要实现一个非常特殊的损失函数。这里有一些解释:假设我有一些名为的快照,的每一列对应一个快照。 还有一些模式叫做。的每一列对应一个模式。你知道吗
我的神经网络接受一些输入,然后给出N个输出,比如。你知道吗
我想在Keras中实现的自定义损失函数如下:
这样,和
最后,问题可以看作是
对于的每一列,即每个快照,也测量一些传感器,即
使用测量传感器,将快照重建为
该算法的目标是找到最佳的神经网络,使得 接近
事实上,我有这样的想法:
def customLoss(modes,snap):
def diff(y_true,y_pred):
predField=modes[:,0]*y_pred[...,0]
for ii in range(1,modes.shape[1]):
predField+=modes[:,ii]*y_pred[...,ii]
realData=#I don t know how can I extract from snap the correct columns
return K.sum(K.square(predField-realData))
return diff
一些虚拟数据如下所示:
m=100
n=10000
N=30
ns=8
snap=np.random.rand((m,n))
modes=np.random.rand((m,N))
x=np.random.rand((ns,n))
你有什么办法让我实现这个目标吗?你知道吗
谢谢
查尔斯
希望我没弄错你的尺寸-
由于预测以
(Batchsize, features)
的形式返回,并且Keras很好地处理sample的行,而不是列,因此需要交换mean
和snap
的维度。完成此操作并执行函数中的
predFields
行之后,您将拥有以下内容:snapT
:形状(N,m)
predFields
:形状(N,m)
,其中每行i
对应g_i(x)phi_i(x)
。你知道吗由于这两个矩阵的形状相同,因此它们之间的简单相减,
snapT
中的每一行将被predFields
中的正确行减去。注意,我假设来自
snap
的每个column i
“属于”来自预测的样本i
。下面是一个玩具示例,我测试了这个设置:
如果我还没有得到你想要的东西,一些示例输入和输出可能会有所帮助。你知道吗
相关问题 更多 >
编程相关推荐