自定义数据集loss跟val_loss非常大,总体还是下降趋势!训练1000次之后停止!

来源:4-5 tf.data读取csv文件并与tf.keras结合使用

神佑骑士

2021-09-12

自定义数据集loss跟val_loss非常大,总体还是下降趋势!训练1000次之后loss跟val_loss都停止了,程序也不继续训练了,这个跟训练集的大小有没有关系?

filename,width,height,class,xmin,xmax,ymin,ymax
2651631000325_.pic_hd.jpg,4096,3072,1,1528,3057,639,2410
3071631151964_.pic_hd.jpg,1080,1440,1,220,839,381,812
2711631000531_.pic_hd.jpg,3072,4096,1,584,2132,1313,3143
def parse_csv_line(line):
    defs = [
        [''],
        tf.constant(np.nan),
        tf.constant(np.nan),
        1,
        tf.constant(np.nan),
        tf.constant(np.nan),
        tf.constant(np.nan),
        tf.constant(np.nan),
    ]
    parse_fields = tf.io.decode_csv(line, record_defaults=defs)
    x_fields = tf.stack(parse_fields[4:5])
    y_fields = tf.stack(parse_fields[6:7])
    return x_fields,y_fields
model = keras.models.Sequential([
    keras.layers.Dense(30,activation='relu',input_shape=(None, 1)),
    keras.layers.Dense(1)
])

model.compile(loss="mean_squared_error",optimizer='sgd')
callbacks = [keras.callbacks.EarlyStopping(patience=5,min_delta=1e-2)]

history = model.fit(train_set,validation_data=valid_set,epochs=2,callbacks=callbacks)`

上面是csv数据集,中间是转换csv的代码,下面是训练代码,如果增加model的层次,loss出现nan ,val_loss出现inf
需求是识别图片有没有一块黑色的布,csv是我将黑色的布用labelImg标注出来的数据!!
这个问题怎么解决?

写回答

1回答

正十七

2021-09-25

是因为你设了EarlyStopping,所以当loss连续几次没有比较大的变化时,训练就会提前停止,可以考虑把earlystopping去掉,然后把epochs从2调大一些。

0
0

Google老师亲授 TensorFlow2.0 入门到进阶

Tensorflow2.0实战—以实战促理论的方式学习深度学习

1849 学习 · 896 问题

查看课程