Python Keras CNN坐标回归仅给出平均值

Python Keras CNN坐标回归仅给出平均值,python,image-processing,tensorflow,keras,regression,Python,Image Processing,Tensorflow,Keras,Regression,我一直在尝试实现一个CNN,给定一个探测器的(75x75)图像,它将为该图像输出源的(x,y)坐标。每个图像都具有可以确定源的功能。我要提出的问题是,输出x,y坐标的回归器总是返回所有训练数据的平均像素值。我试图实现本文中概述的回归器:但它仍然给出了所有预测的平均像素值。下面是我的模型的简短版本: model = Sequential() # Base Conv layer model.add(Conv2D(32, kernel_size=patch_size, strides=(1, 1),

我一直在尝试实现一个CNN,给定一个探测器的(75x75)图像,它将为该图像输出源的(x,y)坐标。每个图像都具有可以确定源的功能。我要提出的问题是,输出x,y坐标的回归器总是返回所有训练数据的平均像素值。我试图实现本文中概述的回归器:但它仍然给出了所有预测的平均像素值。下面是我的模型的简短版本:

model = Sequential()

# Base Conv layer
model.add(Conv2D(32, kernel_size=patch_size, strides=(1, 1),
                    activation='relu', padding='same',
                    input_shape=(75, 75, 1)))
model.add(Conv2D(64, patch_size, strides=(1, 1), activation='relu', padding=optimizer))
model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))
for i in range(num_conv):
    model.add(Conv2D(64, patch_size, strides=(1, 1), activation='relu', padding='same))
    model.add(Conv2D(64, patch_size, strides=(1, 1), activation='relu', padding='same))
    model.add(MaxPooling2D(pool_size=(2, 2), padding='same'))

model.add(Flatten())

for i in range(num_dense):
    model.add(Dense(512, activation='linear'))
    model.add(Dropout(dropout_layer))


# Final Dense layer
# 2 so have one for x and one for y
model.add(Dense(2, activation='linear'))
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
我没有代表发布来源的图片,但当它在42000张图片上训练时,这里是真相和输出:

正如你所看到的,非常糟糕,所有的估计都是在所有x,y坐标平均值的一个点上。而实际值创建了一个覆盖整个探测器的圆。我不知道如何让它实际输出正确的值。我得到,作为损失的均方误差可能会使估计值成为中心值,因为它是所有源的最小平方距离,但我不确定如何尝试它,因为我想分别最小化每个预测和它的标签之间的距离