tensorflow使用正则化和不使用正则化的区别(模型对比加个人分析)

本文探讨了在TensorFlow中使用正则化与不使用正则化对模型训练的影响。通过一个简单的神经网络示例,作者解释了正则化如何通过引入复杂度惩罚来防止过拟合,提高模型的泛化能力。实验证明,启用正则化的模型相比无正则化模型,过拟合现象得到改善,模型收敛效果更佳。
摘要由CSDN通过智能技术生成

最近有学一些机器学习的相关知识,就来讲一些tensorflow使用正则化和不使用正则化的区别

简介

——搭建一个简单的神经网络

——前向传播

——反向传播过程

——八股之正则化

什么是正则化呢?

正则化的概念及原因
简单来说,正则化是一种为了减小测试误差的行为(有时候会增加训练误差)。我们在构造机器学习模型时,最终目的是让模型在面对新数据的时候,可以有很好的表现。当你用比较复杂的模型比如神经网络,去拟合数据时,很容易出现过拟合现象,这会导致模型的泛化能力下降,这时候,我们就需要使用正则化,让训练出来的模型没有那么复杂。

(以上是正则化的概念)

我个人理解是:

机器在学习的过程中如果对一方面的处理(如图像识别)等方面做的非常的好,但是如果出现了新的情况却不能正确的响应,这就是过拟合现象——但是使用了正则化的方法,就可以在损失函数模型中引入复杂度指标,从而有效缓解过拟合现象。

|所以正则化是用来优化训练模型的一个方式

——来举个例子

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# coding:utf-8
# 0导入模块 , 生成模拟数据集合
BATCH_SIZE = 30
seed = 2
# 基于seed产生随机数
rdm = np.random.RandomState(seed)
# 随机数返回300行2列的矩阵, 表示300组坐标点 (x0,x1) 座位输入数据集
X = rdm.randn(300, 2)
# 从X这个矩阵中取出一行,判断如果两个坐标的平方和小于2,给Y赋值1, 其余赋值0
# 作为输入数据集的表情 (正确答案)
Y_ = [int(x0 * x0 + x1 * x1 < 2) for (x0, x1) in X]
Y_c = [['red' if y else 'blue'] for y in Y_]
# 对数据集合X和标签Y进行shape整理, 第一个元素为 -1表示,随第二个参数计算得到,第二个元素
# 表示多少列, 把X整理为n行2列, 把Y整理为n行1列
X = np.vstack(X).reshape(-1, 2)
Y_ = np.vstack(Y_).reshape(-1, 1)
print(X)
print(Y_)
print(Y_c)
# 用plt.scatter画出数据集X各行中第0列元素和第1列元素的点即各行的(x0, x1),用各行Y_c对应
# 的值表示颜色(c是color的缩写)   X[:, 0]的意思是取出横坐标x的第一列元素x0,后面的就是取出第二列x1
plt.scatter(X[:, 0]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值