Python 张量流图像回归模型中的 MAE 损失函数问题 [已关闭]

问题描述 投票:0回答:1

我有 8000 张黑色背景的圆圈图像。每个标签都是圆的 x 坐标。每个图像的大小为 (128,128,3)。我的训练损失从 2000 开始,到 10 结束,而验证损失保持在 200 左右。此外,我通过将每个图像除以 255 来标准化它。

images_array 的形状:(8000,128,128,3) y 是形状:(8000,1)

这是我的代码:

from sklearn.model_selection import train_test_split
X_train, X_temp, y_train, y_temp = train_test_split(images_array, y, test_size=0.2, random_state=42)
X_val, X_test, y_val, y_test = train_test_split(X_temp, y_temp, test_size=0.5, random_state=42)

import tensorflow as tf
X_train = tf.convert_to_tensor(X_train)
y_train = tf.convert_to_tensor(y_train)


from tensorflow import keras
from tensorflow.keras import layers, Model
from tensorflow.keras.models import Sequential

inputs = keras.Input(shape=(128, 128, 3))

# Define the layers

x = layers.Conv2D(8, 3, activation='relu')(inputs)
x = layers.MaxPooling2D(2)(x)
x = layers.Conv2D(16, 3, activation='relu')(x)
x = layers.MaxPooling2D(2)(x)
x=layers.Flatten()(x)
x = layers.Dense(128, activation='relu')(x)
output_x = layers.Dense(1, activation = 'linear', name = "y1_output")(x)


model = Model(inputs = inputs, outputs = output_x)
model.summary()

我可以做什么来显着改善我的损失?

我尝试了不同的激活函数和不同的优化器。

python tensorflow machine-learning keras
1个回答
0
投票

您可以首先检查您的模型是否过度拟合。训练损失明显低于验证损失。您可以通过绘制模型训练期间每个时期的训练和验证损失的演变来做到这一点。如果是这种情况,您可以使用 dropout、L2 正则化或批量归一化等技术来防止过度拟合。

否则,您可以尝试不同的方法来改善验证损失:

  1. 通过添加更多层来实现更复杂的模型。
  2. 数据预处理,包括标准化和数据增强。使用
    ImageDataGenerator
    的示例:
datagen = ImageDataGenerator(
    rotation_range=20,
    width_shift_range=0.2,
    height_shift_range=0.2,
    horizontal_flip=True
)

datagen.flow(X_train, y_train, batch_size=32)
  1. 调整超参数,例如学习率、批量大小和纪元数。
  2. 使用预先训练的模型并根据您的任务对其进行微调。
© www.soinside.com 2019 - 2024. All rights reserved.