Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 实现MSE损耗_Python_Tensorflow_Machine Learning_Keras_Deep Learning - Fatal编程技术网

Python 实现MSE损耗

Python 实现MSE损耗,python,tensorflow,machine-learning,keras,deep-learning,Python,Tensorflow,Machine Learning,Keras,Deep Learning,我刚开始深入学习,我想实现一个自动编码器。我正在使用keras和mse损失函数。但当我使用我实现的MSE函数时,我的函数和keras.loss.MSE的输出大致相同,但结果明显更糟 由于项目中的一些需要,我想修改MSE。但实施后,结果的质量变得更差 该函数的输入为两个23*32*3 nArray。 由于我想做的修改,我不得不做切片 导入tensorflow作为tf 将numpy作为np导入 进口干酪作为k def自定义_损失(im1、im2): im11=im1[:,:,0] im12=im1

我刚开始深入学习,我想实现一个自动编码器。我正在使用kerasmse损失函数。但当我使用我实现的MSE函数时,我的函数和keras.loss.MSE的输出大致相同,但结果明显更糟

由于项目中的一些需要,我想修改MSE。但实施后,结果的质量变得更差

该函数的输入为两个23*32*3 nArray。 由于我想做的修改,我不得不做切片


导入tensorflow作为tf
将numpy作为np导入
进口干酪作为k
def自定义_损失(im1、im2):
im11=im1[:,:,0]
im12=im1[:,:,1]
im13=im1[:,:,2]
im21=im2[:,:,0]
im22=im2[:,:,1]
im23=im2[:,:,2]
diff1=tf.平方(im11-im21)
diff2=tf.平方(im12-im22)
diff3=tf.平方(im13-im23)
res=tf.divide((diff1+diff2+diff3),3)
返回res
但当我测试它时,结果几乎是一样的。但当我在模型中使用它时,结果要糟糕得多


a=np.random.rand(32,32,3)
b=np.random.rand(32,32,3)
v1=tf.placeholder(tf.float32,(32,32,3),'v1')
v2=tf.placeholder(tf.float32,(32,32,3),'v2')
使用tf.Session()作为sess:
me=sess.run(自定义丢失(v1,v2),提要dict={v1:a,v2:b})
true=sess.run(k.loss.mse(v1,v2),feed_dict={v1:a,v2:b})
对于范围(32)内的i:
对于范围(32)内的j:
打印(i,j,真[i][j],我[i][j])

我认为您缺少差异的求和

尝试:

def custom_loss(im1, im2):
    im11 = im1[:, :, 0]
    im12 = im1[:, :, 1]
    im13 = im1[:, :, 2]
    im21 = im2[:,:,0]
    im22 = im2[:,:,1]
    im23 = im2[:,:,2]
    diff1 = (im11 - im21)**2
    diff2 = (im12 - im22)**2
    diff3 = (im13 - im23)**2
    res = tf.divide((diff1 + diff2 + diff3).sum(), 3)
    return res