Python CNN训练损失停留在51-60之间

Python CNN训练损失停留在51-60之间,python,pandas,keras,deep-learning,conv-neural-network,Python,Pandas,Keras,Deep Learning,Conv Neural Network,我正试图创建我的第一个CNN来预测公寓价格。问题是,在1-5个时期之后,损失值被卡住,并且没有减少,只是增加了一点,然后又减少了。(提前感谢) 最后一个密集层有一个输出。这是有意的吗? 如果有两个以上的类,则希望最后一个密集层的类数作为输出 除此之外,您是否尝试过降低您的lr? 看起来很高。 您也可以尝试在Conv2D之后添加一个退出层。 有点像“辍学(0.2)”是的,最后一层是有意的,因为它是一个回归模型,有点像。如果我使用较低的lr,即使是0.001,也要花很长时间才能通过第一个历元,更不用

我正试图创建我的第一个CNN来预测公寓价格。问题是,在1-5个时期之后,损失值被卡住,并且没有减少,只是增加了一点,然后又减少了。(提前感谢)


最后一个密集层有一个输出。这是有意的吗? 如果有两个以上的类,则希望最后一个密集层的类数作为输出

除此之外,您是否尝试过降低您的lr? 看起来很高。 您也可以尝试在Conv2D之后添加一个退出层。
有点像“辍学(0.2)”

是的,最后一层是有意的,因为它是一个回归模型,有点像。如果我使用较低的lr,即使是0.001,也要花很长时间才能通过第一个历元,更不用说下一个历元了,依此类推。试过辍学——这有助于弥补损失,但仍然不会低于51岁——永远有多长?你是在cpu还是gpu上运行它?一个历元大概需要2分钟。我在cpuIf上运行培训,如果您发布数据,我可以运行您的模型并查看结果。两分钟的时间不多。你应该减少历元的数目。当使用过高的学习率时,您可能会陷入局部最小/最大值。因此,最好使用较低的学习率
from keras.layers import Conv2D, MaxPool2D, Dense, BatchNormalization, Flatten
from keras.optimizers import Adam
from keras.models import Sequential

from keras.preprocessing.image import ImageDataGenerator
from PIL import Image
import pandas as pd

train_data_df = pd.read_excel('train_data_cnn.xlsx')
test_data_df = pd.read_excel('test_data_cnn.xlsx')

datagen = ImageDataGenerator(rescale=1./255)
train_data = datagen.flow_from_dataframe(dataframe=train_data_df, x_col='filepath', y_col='price', class_mode='raw', directory=r'C:\Users\Kojimba\PycharmProjects\DeepEval\CNN', batch_size=20)
test_data = datagen.flow_from_dataframe(dataframe=train_data_df, x_col='filepath', y_col='price', class_mode='raw', directory=r'C:\Users\Kojimba\PycharmProjects\DeepEval\CNN', batch_size=20)

model = Sequential([
    Conv2D(32, kernel_size=32, strides=(2,2), padding='same', activation='relu', input_shape=(256, 256, 3), data_format='channels_last'),
    #BatchNormalization(),
    MaxPool2D(strides=2),
    Conv2D(128, kernel_size=64, strides=(4,4), padding='same', activation='relu'),
    #BatchNormalization(),
    MaxPool2D(),
    Flatten(),
    Dense(8, activation='relu', kernel_initializer='random_normal', bias_initializer='zeros'),
    Dense(8, activation='relu', kernel_initializer='random_normal', bias_initializer='zeros'),
    Dense(1, activation='linear', kernel_initializer='random_normal', bias_initializer='zeros')
])

model.compile(Adam(lr=0.01, beta_1=0.98, beta_2=0.999), loss='mean_absolute_percentage_error')
model.summary()

model.fit_generator(train_data, steps_per_epoch=24, epochs=100)

model.evaluate_generator(test_data)