Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/308.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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_Tensorflow_Keras_Deep Learning_Loss - Fatal编程技术网

Python 神经网络中的恒损耗

Python 神经网络中的恒损耗,python,tensorflow,keras,deep-learning,loss,Python,Tensorflow,Keras,Deep Learning,Loss,我的神经网络接收一个(1000,1000,5)形状阵列,该阵列在一个分支(5个堆叠光栅图像)中进行卷积,并接收一个(12)形状阵列(仅12个数字),该阵列在第二个分支中穿过两个密集层 输出被连接成(31,31,65)形状张量,然后反褶积成最终的(1000,1000)形状数组 我的问题: 我制作了自己的简单损失函数(平均误差),因为输出代表一个区域的温度。 我目前的问题是,我的损失在200多个时期内显著下降(无论是损失还是val_损失,从一个小小数点到大约-3),整个时间的准确度都在0.002左右

我的神经网络接收一个
(1000,1000,5)
形状阵列,该阵列在一个分支(5个堆叠光栅图像)中进行卷积,并接收一个
(12)
形状阵列(仅12个数字),该阵列在第二个分支中穿过两个密集层

输出被连接成
(31,31,65)
形状张量,然后反褶积成最终的
(1000,1000)
形状数组

我的问题: 我制作了自己的简单损失函数(平均误差),因为输出代表一个区域的温度。 我目前的问题是,我的损失在200多个时期内显著下降(无论是
损失
还是
val_损失
,从一个小小数点到大约-3),整个时间的准确度都在0.002左右。 我已将学习率更改为低至
1e-5
。我给训练集提供了更多的样本(不幸的是,开始时样本不多),增加了(担心过度拟合)和减少了(缺少数据)批量大小。所有输入数据都被标准化为0:1,这使得超出
-1
的任何损失都是不合理的

我不确定我是否应该为这个任务使用不同的优化器,或者不同的激活,或者只是删除一两层。但最重要的是,我想了解是什么让这个模型如此不可靠。 我真的试着不把整件事都贴在这里,但我已经完全没有想法了

传销部
dim=12
输入=输入(形状=(尺寸,))
x=输入
x=密集(尺寸*4,激活='relu')(x)
x=密集(尺寸*16,激活='relu')(x)
x=密集(961,激活='relu')(x)#961个节点
x=重塑((31,31,1))(x)#(31,31,1)数组
模型1=模型(输入,x)
卷积分支
inputShape=(1000,1000,5)
chanDim=-1
输入=输入(形状=输入形状)
x=输入
#第1层:conv,f=8,pool=2
x=Conv2D(8,(3,3),padding='same',activation='relu')(x)
x=批次标准化(轴=chanDim)(x)
x=MaxPoolig2D(池大小=(2,2))(x)
#第二层:conv,f=16,pool=2
x=Conv2D(16,(3,3),padding='same',activation='relu')(x)
x=批次标准化(轴=chanDim)(x)
x=MaxPoolig2D(池大小=(2,2))(x)
#第三层:conv,f=32,pool=2
x=Conv2D(32,(3,3),padding='same',activation='relu')(x)
x=批次标准化(轴=chanDim)(x)
x=MaxPoolig2D(池大小=(2,2))(x)
#第4层:conv=64,pool=4
x=Conv2D(64,(3,3),padding='same',activation='relu')(x)
x=批次标准化(轴=chanDim)(x)
x=MaxPoolig2D(池大小=(4,4))(x)
模型2=模型(输入,x)
反褶积
combinedInput=Concatenate()([model1.output,model2.output])
x=组合输入(31,31,65)
x=Conv2DTranspose(43,(3,3),步幅=(4,4),填充='same',激活='relu')(x)#(124,124,43)
x=Conv2DTranspose(22,(3,3),步幅=(2,2),填充='same',激活='relu')(x)#(248248,248,22)
x=Lambda(Lambda y:space_2d_padding(y))(x)#(250250,22)
x=Conv2DTranspose(10,(3,3),步幅=(2,2),填充='same',激活='relu')(x)#(500500,10)
x=Conv2DTranspose(1,(3,3),步幅=(2,2),填充=‘相同’,激活=‘线性’(x)#(1000,1000,1)
x=λ(λy:挤压(y,轴=3))(x)#(10001000)
编撰
def自定义损耗(y_实际,y_预测):
自定义损失值=平均值(y_实际值-y_预测值)
返回自定义损失值
模型=模型(输入=[mlp.input,cnn.input],输出=x)
compile(loss=custom_loss,optimizer=Adam(lr=0.000001),metrics=['mae']))
#历次=200的列车,批量=12
问题 正如我在上面所解释的,我的损失从未稳定下来,在各个时代,准确率大致徘徊在相同的数字上

我想知道可能的原因和可能的解决办法。

编辑: 自从写下这个问题以来,我试图:

  • 从卷积分支到反卷积分支
  • 在每个
    conv2dtranpse()
    层之后添加
    BatchNormalization()

您是否尝试过均值(abs(y_实际值-y_预测值)),即MAE或均值(y_实际值-y_预测值)**2,即MSE?当优化器试图最小化错误时,当您的错误没有实际限制时,它将继续减少。显然,这是一个问题,因为8e-3的错误与-8e-3一样糟糕!MSE是我第一次尝试的。数字要小得多,但趋势是一样的——损失并没有稳定下来。它仍然是负的吗?根据定义,MSE始终为正(或0)。您是否尝试过平均值(abs(y_实际值-y_预测值)),即MAE或平均值((y_实际值-y_预测值)**2),即MSE?当优化器试图最小化错误时,当您的错误没有实际限制时,它将继续减少。显然,这是一个问题,因为8e-3的错误与-8e-3一样糟糕!MSE是我第一次尝试的。数字要小得多,但趋势是一样的——损失并没有稳定下来。它仍然是负的吗?根据定义,MSE始终为正(或0)。