Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 均方误差代价函数的应用条件_Python_Machine Learning_Deep Learning_Theano_Mean Square Error - Fatal编程技术网

Python 均方误差代价函数的应用条件

Python 均方误差代价函数的应用条件,python,machine-learning,deep-learning,theano,mean-square-error,Python,Machine Learning,Deep Learning,Theano,Mean Square Error,我正在构建一个卷积神经网络,我正在使用均方误差作为代价函数。当网络输出大于1时,我将代价函数更改为无误差,因此当网络输出大于1时,我将阈值设置为1。使用此代码 def MSE2(self, y): loc = np.where(y == 1)[0] for i in range(len(loc)): if self.input2[loc[i]] > 1: self.input2[loc[i]] =

我正在构建一个卷积神经网络,我正在使用均方误差作为代价函数。当网络输出大于1时,我将代价函数更改为无误差,因此当网络输出大于1时,我将阈值设置为1。使用此代码

 def MSE2(self, y):

        loc = np.where(y == 1)[0]
        for i in range(len(loc)):
            if self.input2[loc[i]] > 1:
                self.input2[loc[i]] = 1

        return T.mean((y - self.input2) ** 2)
我想知道,在计算梯度时,无梯度函数是否会考虑到这一点,或者我应该改变一些其他的东西


除此之外,是否有其他方法可以优化此代码以更快地运行,或者在GPU上运行

您可以使用T.(self.input2,minimum_value,1)将剪裁多个值并将其设置为一。不需要循环。

所以我发现解决这个问题的最好方法是

def MSE2(self, y):
    loc = T.eq(y,1).nonezeros()[0]
    S = T.clip(self.input2[loc],0,1)
    self.input2 = T.set_subtensor(self.input2[loc], S)
    return T.mean((y - self.input2) ** 2)

我已经测试了结果和梯度

这非常有效,我甚至可以使用T.where和T.Which。问题是我只需要在变量Y中存在1的位置剪裁值。