tensorflow之过拟合问题实战

1.构建数据集

我们使用的数据集样本特性向量长度为 2,标签为 0 或 1,分别代表了 2 种类别。借助于 scikit-learn 库中提供的 make_moons 工具我们可以生成任意多数据的训练集。

import matplotlib.pyplot as plt
# 导入数据集生成工具
import numpy as np
import seaborn as sns
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from tensorflow.keras import layers, Sequential, regularizers
from mpl_toolkits.mplot3d import Axes3D
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

为了演示过拟合现象,我们只采样了 1000 个样本数据,同时添加标准差为 0.25 的高斯噪声数据:

def load_dataset():# 采样点数N_SAMPLES = 1000# 测试数量比率TEST_SIZE = None# 从 moon 分布中随机采样 1000 个点,并切分为训练集-测试集X, y = make_moons(n_samples=N_SAMPLES, noise=0.25, random_state=100)X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=TEST_SIZE, random_state=42)return X, y, X_train, X_test, y_train, y_test
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

make_plot 函数可以方便地根据样本的坐标 X 和样本的标签 y 绘制出数据的分布图:

def make_plot(X, y, plot_name, file_name, XX=None, YY=None, preds=None, dark=False, output_dir=OUTPUT_DIR):# 绘制数据集的分布, X 为 2D 坐标, y 为数据点的标签if dark:plt.style.use('dark_background')else:sns.set_style("whitegrid")axes = plt.gca()axes.set_xlim([-2, 3])axes.set_ylim([-1.5, 2])axes.set(xlabel="$x_1$", ylabel="$x_2$")plt.title(plot_name, fontsize=20, fontproperties='SimHei')plt.subplots_adjust(left=0.20)plt.subplots_adjust(right=0.80)if XX is not None and YY is not None and preds is not None:plt.contourf(XX, YY, preds.reshape(XX.shape), 25, alpha=0.08, cmap=plt.cm.Spectral)plt.contour(XX, YY, preds.reshape(XX.shape), levels=[.5], cmap="Greys", vmin=0, vmax=.6)# 绘制散点图,根据标签区分颜色m=markersmarkers = ['o' if i == 1 else 's' for i in y.ravel()]mscatter(X[:, 0], X[:, 1], c=y.ravel(), s=20, cmap=plt.cm.Spectral, edgecolors='none', m=markers, ax=axes)# 保存矢量图plt.savefig(output_dir + '/' + file_name)plt.close()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
def mscatter(x, y, ax=None, m=None, **kw):import matplotlib.markers as mmarkersif not ax: ax = plt.gca()sc = ax.scatter(x, y, **kw)if (m is not None) and (len(m) == len(x)):paths = []for marker in m:if isinstance(marker, mmarkers.MarkerStyle):marker_obj = markerelse:marker_obj = mmarkers.MarkerStyle(marker)path = marker_obj.get_path().transformed(marker_obj.get_transform())paths.append(path)sc.set_paths(paths)return sc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
X, y, X_train, X_test, y_train, y_test = load_dataset()
make_plot(X,y,"haha",'月牙形状二分类数据集分布.svg')
  • 1
  • 2

2.网络层数的影响

为了探讨不同的网络深度下的过拟合程度,我们共进行了 5 次训练实验。在

tensorflow之过拟合问题实战相关推荐

  1. tensorflow 语义slam_研究《视觉SLAM十四讲从理论到实践第2版》PDF代码+《OpenCV+TensorFlow深度学习与计算机视觉实战》PDF代码笔记...

    我们知道随着人工神经网络和深度学习的发展,通过模拟视觉所构建的卷积神经网络模型在图像识别和分类上取得了非常好的效果,借助于深度学习技术的发展,使用人工智能去处理常规劳动,理解语音语义,帮助医学诊断和支 ...

  2. 【美团云】TensorFlow 迁移学习识花实战案例(Transfer Learning)

    TensorFlow 迁移学习识花实战案例(Transfer Learning) TensorFlow 迁移学习识花实战案例 什么是迁移学习 为什么要使用迁移学习 识花模型中迁移学习的思路 VGG模型 ...

  3. tensorflow一元二次函数拟合

    先看下要做的内容,创建一元二次函数y=x平方-0.5,其中为了更符合散点图模拟需要,在方程加噪点,以标准方差0.05行驶,如图所示 折线图 散点图 下面我们要做的,是要计算机自动拟合出该散点图的函数, ...

  4. Tensorflow GAN对抗生成网络实战

    这一节的回顾主要针对使用JS散度得DCGAN和基于GP理论和Wasserstein Distance理论的WGAN首先是DCGAN 我们的训练数据集是一堆这种二次元的动漫头像的图片,那么我们就是要训练 ...

  5. 基于tensorflow的个性化电影推荐系统实战

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2022.12.24 La ...

  6. 【Keras+计算机视觉+Tensorflow】OCR文字识别实战(附源码和数据集 超详细必看)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 一.OCR文字识别简介 利用计算机自动识别字符的技术,是模式识别应用的一个重要领域.人们在生产和生活中,要处理大量的文字.报表和文本.为了减轻人们 ...

  7. tensorflow随笔-线性拟合以及tensorboard

    运行程序,并查看生成的汇总信息 [root@VM_0_3_centos learn]# python36 learn1.py 2018-12-19 09:22:26.676337: I tensorf ...

  8. Tensorflow框架:卷积神经网络实战--Cifar训练集

    Cifar-10数据集包含10类共60000张32*32的彩色图片,每类6000张图.包括50000张训练图片和 10000张测试图片 代码分为数据处理部分和卷积网络训练部分: 数据处理部分: #该文 ...

  9. TensorFlow深度学习应用开发实战(深度学习简介和开发环境搭建)

    一.深度学习的发展及其应用 1.1 深度学习的发展历程 1956年,John McCarthy(约翰·麦卡锡)等人在美国达特茅斯学院(Dartmounth College)开会探讨如何使用机器模拟人的 ...

最新文章

  1. 分分钟玩转多进程编程
  2. Django部署(Apache)
  3. 安装flume1.5
  4. 步步理解 JAVA 泛型编程 – 共三篇
  5. java中nio怎么实现聊天,JAVA-NIO实现聊天室详细代码说明
  6. 自动部署 php,Jenkins实现PHP的自动部署
  7. 打造具有物联网基因的现代化商业银行
  8. Linux Page Cache机制
  9. matlab2c使用c++实现matlab函数系列教程-fft函数
  10. matlab 剪裁视频教程,matlab截取一段视频和裁剪一小块视频区域
  11. vmware之VMware Remote Console (VMRC) SDK(二)
  12. 传真服务器维护,DreamFax传真服务器
  13. axure8下拉表单_AXURE RP 8怎么设置下拉菜单? AXURE下拉菜单的制作方法
  14. Legend of Mir(传奇)官方源码学习3、服务端程序初始化过程
  15. adpcb 添加差分对_在AD中PCB设计常用规则——差分规则设置?
  16. 在360与腾讯过家家时,我们该醒醒了
  17. Pwn-高阶ROP-[栈溢出]/篇3
  18. 字节的按位逆序 Reverse Bits
  19. 记一次在咸鱼上购买MacBook Pro的经历
  20. 信息论:数据压缩和信源编码

热门文章

  1. can通道采样频率_CAN总线基础(上)
  2. c语言课程设计坦克大战,funcodec++课程设计_坦克大战
  3. 驱动设计的思想:面向对象/分层/分离
  4. 怎么测并发 PHP,PHP接口并发测试的方法(推荐)
  5. delete语句与reference约束冲突怎么解决_mysql update语句和原数据一样会更新么
  6. 自定义 VIEW 截图 保存到图库 并分享
  7. android ripple 大小,Android Ripple 旋钮水波纹效果(一)
  8. php-fmp开机启动,php-fpm设置成服务并开机自动启动
  9. tcp转串口_浅谈串口转以太网技术
  10. 文巾解题 596. 超过5名学生的课