tensorflow2过拟合和欠拟合知识点记录

这几天看了机器学习一点入门的内容。

写这篇笔记是因为我搞了个验证码识别demo,验证码是用ImageCaptcha生成的(用我的近视眼有些都分不清)识别率为0;如果你有这个好的模型在评论区告诉我!!!

调了下只识别出来两个!!!

先记点理论知识吧。

1.概念理解

通过观测训练准确率和验证准确率可以大致推断模型是否出现过拟合和欠拟合。

模型的训练误差较低,训练准确率较高,但是验证误差较高,验证准确率较低,那么可能出现了过拟合现 象。

训练集和验证集上面的误差都较高,准确率较低,那么可能出现了欠拟合现象.

过拟合:我理解的意思就是训练数据很好看,实际执行的时候不行。

欠拟合:训练的都不行。

2.遇到过拟合如何处理

2.1数据比例划分

训练集、验证集和测试集可以按着自定义的比例来划 分,比如常见的 60%-20%-20%的划分。

2.2调整网络模型

过拟合:如降低网络的层数、降低网络的参数量、添加正则化手段、添加假设空间的约束等,使得模型的实际容量降低,从而减轻或解决过拟合现象;

过拟合降低网络参数转换

欠拟合:当观测到欠拟合现象时,可以尝试增大网络的容量,如加深网络的层数、增加网络的参数量,尝试更复杂的网络结构。

欠拟合增加网络复杂度

2.3训练提前停止
python 复制代码
history=model.fit(训练集数据, 训练集标签, 
batch_size=, epochs=,
validation_split=用作测试数据的比例,
validation_data=测试集, 
validation_freq=测试频率)

batch运算更新一次 = 一次step

所有样本迭代一次 = 一次epochs

可以在适当的位置中断提前终止训练

2.4正则惩罚(目的降低网络的实际参数量和网络容量

数学我是一点都不会了 L0(中范数非零元素的个数)、L1(中范数所有元素的绝对值之和)、L2(中范数所有元素的平方和)

python 复制代码
def build_model_with_regularization(_lambda): 
    # 创建带正则化项的神经网络 
    model = Sequential() 
    model.add(Dense(8, input_dim=2,activation='relu')) # 不带正则化项 
    model.add(Dense(256, activation='relu', # 带 L2 正则化项 
                    kernel_regularizer=regularizers.l2(_lambda))) 
    model.add(Dense(256, activation='relu', # 带 L2 正则化项 
                    kernel_regularizer=regularizers.l2(_lambda))) 
    model.add(Dense(256, activation='relu', # 带 L2 正则化项 
                    kernel_regularizer=regularizers.l2(_lambda))) 
    # 输出层 
    model.add(Dense(1, activation='sigmoid')) 
    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # 模型装配 
    return model 
2.5Dropout

丢弃掉一些参数

python 复制代码
model.add(layers.Dropout(rate=0.5))

3.欠拟合

数据量少的情况,通过一些方法改变下图片:旋转、翻转、裁剪、对抗网络 (Conditional GAN,简称 CGAN)可以生成带标签的样本数据、其他一些手段(opencv添加噪点、遮挡、擦除

python 复制代码
    # 图片逆时针旋转 180 度 
    x = tf.image.rot90(x,2)
 
    # 随机水平翻转 
    x = tf.image.random_flip_left_right(x) 
    # 随机竖直翻转 
    x = tf.image.random_flip_up_down(x)
    
     # 图片先缩放到稍大尺寸 
    x = tf.image.resize(x, [244, 244]) 
    # 再随机裁剪到合适尺寸 
    x = tf.image.random_crop(x, [224,224,3])

   通过opencv操作对图片进行其他一些手段
相关推荐
我命由我1234520 分钟前
Function Calling 模型
人工智能·python·学习·ai·学习方法·ai编程·ai写作
XMXFS1 小时前
小红书推荐算法底层逻辑解析:用数据思维做内容优化
python·算法·新媒体运营·推荐算法
hans7748829681 小时前
仅根据BMI反推身高和体重?还真能做到!只需要简单的数论知识~
python·数学
追光者492 小时前
我把 55 篇自动化日志翻了一遍:最容易出事的是这 4 个地方
python·自动化运维
2601_962885722 小时前
如何用 Python计算 CR能量指标(中间意愿指标)?
开发语言·python
打工仔折腾 AI2 小时前
LangChain 工具调用实战:从 Tool 定义到 Agent 执行链路拆解
java·前端·人工智能·后端·python·langchain·ai agent 实战
hhb_6182 小时前
Flask+SQLite实现用户管理接口
python·sqlite·flask
全栈练习生2 小时前
RAG 准确率保障的体系化方案
python·ai
秋秋小事2 小时前
python 基础知识总结(一)
python
蜗牛互联网2 小时前
Python调用Gemini Structured Outputs实现工单路由门禁
java·开发语言·人工智能·python