神经网络与深度学习

在这里插入图片描述

1 numpy学习笔记

1.1 基础知识

1、数据在机器学习中的存储形式
在机器学习中,所有的输入数据都会转变为一维/多维数组的形式进行存储
2、数组的形状
数组的形状用一个元组来表示,它描述了数组的维数和长度,比如(3,3,3,3)这里面一共有4个数组,即表示4维数组,每一个数组代表着这个维度的长度,这里第一二三四维度的长度都是3
3、如何在python中创建这些数组及如何使用?
python中提供了NumPy库进行数据的数组形式存储以及操作,该库提供了多维数组、矩阵的常用操作和一些高效的科学计算函数,底层运算通过C语言实现,处理速度快,效率高,适用于大规模多维数组,数组规模越大,性能就越能体现
4、numpy如何创建数组

  • 创建格式:a = np.array([0,1,2,3,4,5])
  • 指定数组的数据类型,a = np.array([0,1,2,3,4,5],dtype=np.int64)
    • 数组的属性
      • ndmin数组的维数
      • shape数组的形状
      • size数组元素的总个数
      • ·dtype数组中元素中的数据类型
      • ·itemsize数组中每个元素的字节数

5、numpy创建特殊的数组

  • np.arange(起始数字,结束数字,步长,dtype=数据类型):创建数字序列数组
  • np.ones(shape,dtype=数据类型):创建全1数组
  • np.zeros(shape,dtype=数据类型):创建全0数组
  • np.eye(shape):创建单位矩阵
  • np.linspace(起始数字,结束数字,num=元素个数):创建等差数列
  • np.logspace(起始指数,结束指数,num=元素个数,底数):创建等比数列。比如np.logspace(1,5,5,2)表示第一位数组就是2^1(起始指数是1) - 2^2 - 2^3 - 2^4 - 2^5(结束指数是5)一共5个元素

6、numpy数组的运算

  • 1、b[0:2]:获得数组元素的切片,b是数组
  • 2、b[0:2,0:3]:获得数组元素的切片,b是数组
  • 3、np.reshape(shape):不改变当前数组,按照shape创建新的数组
    • 通过reshape快速创建数组:np.arange(12).reshape(3,4)
    • np.reshape(-1):根据数组中元素个数,以及其他维度的取值,来自动计算出这个维度的取值
  • 4、np.resize(shape):改变当前数组,按照shape创建新的数组
  • 5、数组的加法运算
    • 当数组的格式shape相同的时候,可以使用数组的加法并列成新的数组
  • 6、矩阵运算-矩阵乘法
    • 乘号运算符:矩阵中对应的元素分别相乘
  • 7、矩阵运算-转置和求逆
    • ·np.transpose():矩阵转置
    • ·np.linalg.inv():矩阵求逆

7、数组元素之间的运算

  • numpy.sum()计算所有元素的和
  • numpy.prod()计算所有元素的乘积
  • numpy.diff()计算数组的相邻元素之间的差
  • numpy.sqrt()计算各元素的平方根
  • numpy.exp()计算各元素的指数值
  • numpy.abs()取各元素的绝对值

1.2 numpy矩阵对象

一个二维数组可以看做矩阵
1、矩阵的创建形式

  • np.matrix(字符串/列表/数组)
  • np.mat(字符串/列表/数组)

2、矩阵对象的属性

  • ndim:矩阵维数
  • shape:矩阵的形状
  • size:矩阵的元素个数
  • dtype:元素的数据类型

3、矩阵运算–转置、求逆

  • 矩阵转置:矩阵对象.T
  • 矩阵求逆:矩阵对象.I

1.3 numpy产生随机数---------

1、产生随机数函数–模块numpy.random

  • np.random.rand(d0,d1,d2…dn)元素在(0,1)均匀分布的数组
  • np.random.uniform(low,high,size)元素在(low,high)区间均匀分布的数组
  • np.random.randint(low,high,size)元素在(low,high)区间均匀分布的数组
  • np.random.randn(d0,d1,d2…dn)产生标准正态分布数组
  • np.random.normal(loc,scale,size)产生正态分布的数组
  • np.random,shuffle(序列)打乱顺序函数

2、随机函数产生不同随机数组的原因

  • 伪随机数:由随机数种子根据一定的算法生成
  • 产生随机数组是根据随机种子根据一定的算法产生随机数组的,而每一次产生随机种子(seed()函数)都是不同的,所以产生的随机数组都是不同的,当我们设置随机种子一样的时候,那么长生的随机数组就是一样的

============================

2 matplotlib画图工具学习笔记

1、出现matplotlib的背景
numpy对数据进行统计分析计算,但是大量枯燥的数据令人头痛,随后就出现了matplotlib将数据进行可视化,它是绘制图表的第三方库,可以快速方便的生成高质量的图表。包括直方图、柱状图、散点图、气泡图、折线图、三维图

  • 作用1:数据分析阶段:理解和洞察数据之间的关系
  • 作用2:算法调试阶段:发现问题,优化算法
  • 作用3:项目总结阶段:展示项目成果

2、pyplot-是matplotlib的子库,快速绘制二维图表

  • 2.1 Figure对象-画布
    • 2.1.1 构造函数:fig = pyplot.figure(num,figsize,dpi,facecolor,edgecolor,frameon)
      • num:图形的编号或名称
      • figsize:图像的高和宽
      • dpi:图像对象的分辨率
      • facecolor:背景颜色
      • edgecolor:边框颜色
      • frameon:表示是否显示边框
  • 2.2 划分pyplot子图-下面是创建三个图表
    pyplot.subplot(2,2,1)
    • pyplot.subplot(2,2,2)
    • pyplot.subplot(2,2,3)
  • 2.3 设置中文字体:pyplot.rgParams[“font.sans-serif”]=“SimHei”
  • 2.4 添加标题
    • 全局标题:suptitle()
    • 子标题:title()
  • 2.5 解决子图之间坐标轴的交叉问题
    • 使用tight_layout()函数
  • 2.6 散点图
    • scatter(x,y,scale,color,marker,label)绘制
      x,y:坐标(不可省略)
      scale:数据点的大小
      color:数据点的颜色
      marker:数据点的样式
      label:图例文字
    • text(x,y,s,fontsize,color)函数
      x,y:文字的坐标(不可省略)
      s:显示的文字
      fontsize:文字的大小
      color:文字的颜色
    • 坐标轴的设置:plt.rcParams[“axes.unicode_minus”]=False
      xlebal(x,y,s,fontsize,color):设置x轴标签
      ylebal(x,y,s,fontsize,color):设置y轴标签
      xlim(xmin,xmax):设置x轴坐标的范围
      ylim(ymin,ymax):设置y轴坐标的范围
      tick_params(labelsize):设置刻度文字的字号
  • 2.7 折线图:
    • 构造函数plot(x,y,color,marker,label,linewidth,markersize)
      x,y:数据点的坐标
      color:数据点的颜色
      marker:数据点的样式
      label:图例文字
      linewidth:折线的宽度
      markersize:数据点的大小
  • 2.8 柱形图
    • 构造函数:bar(left,height,width,facecolor,edgecolor,label)
      left
      height:条纹的高度
      width:条纹的宽度
      facecolor:条纹的颜色
      edgecolor:条纹的背景色
      label:该条纹的文字

Keras数据集库

  • 1 功能
    Keras是一个高层的神经网络和深度学习库,可以快速搭建神经网络模型,非常易于调试和扩展,内置了一些常用的公共数据集,可以通过Keras.datastes模块加载和访问,它已经成为TensorFlow的官方API
  • Keras中集成的数据库
    • boston_housing :波士顿房价数据集
    • CIFAR10 :10中类别的图片集
    • CIFAR100 :100中类别的图片集
    • MNIST :手写数据图片集
    • Fashion-MNIST :10中时尚类别的图片集
    • IMDB :电影点评数据集
    • reuters :路透社新闻数据集
  • 2 波士顿房价预测案例
    • 2.1 数据集
      在这里插入图片描述
  • 2.2 加载数据集
import tensorflow as tf
#boston_housing是数据集名称
boston_housing = tf.keras.datasets.boston_housing
#加载数据集:-->数据集加载提示,本地默认地址C:\Users\user_name\.keras\datasets\boston_housing.npz(npz是一种数据存储压缩格式)
#train_x,train_y训练集的属性和房价;test_x,test_y测试集的属性和房价
(train_x,train_y),(test_x,test_y) = boston_housing.load_data()
  • 2.3 平均房价数据集可视化
    在这里插入图片描述
  • 2.4 循环方法13个属性与房价的可视化
    在这里插入图片描述
    结果
    在这里插入图片描述

============================

3 数字图像基础

3.1 基本概念

  • 图像的离散化
    • 连续图像:人眼直接感受到的图像

    • 数学图像:把连续的图像数字化、离散化之后的图像,它是对连续图像的一种近似

    • 像素:数字图像中的一个最小单元

    • 位图:通过记录每一个像素值来存储和表达的图像

    • 色彩深度/位深度:位图中每一像素点要用多少个二进制位来表示

    • BMP格式:Windows系统的标准位图格式

    • 二值图像:每个像素只有2种可能的取值,也就是黑白图像使用1位二进制来表示,位深度为1

    • 灰度图像:每个像素使用一个字节表示,位深度为8,可以表示256中级别的灰度。0表示黑色;255表示白色

    • 彩色(RGB)图像
      每个像素都都有红(R)绿(G)蓝(B)三个分量,一个像素点使用3个字节,位深度为24,可以表示256256256中颜色

    • RGBA图像
      RGB图像+8位透明度信息Alpha

    • 数字图像如何显示?
      将图像进行数字化,每一个图像都是一个个像素组成,通过位图来还原成原图像。

    • 图像类型

      • 序列图像
        时间上有一定顺序和间隔、内容上相关的一组图像,其中每幅图像称为帧图像,帧图像之间的时间间隔是固定的
        在这里插入图片描述

      • 深度图像
        是一种三维场景信息的表达式,每个像素点的取值代表着这个点离摄像机的距离,采用灰度图表示
        在这里插入图片描述

    • 图像存储格式

      • JPEG格式
        • 有损 压缩
        • 压缩率高,所占空间小
        • 适合于色彩丰富、细节清晰细腻的大图像
        • 不适合所含颜色较少,具有大块颜色相近的区域,或者亮度差异十分明显的简单图片
      • PNG格式
        • 无损压缩
        • 适合于有规律渐变色彩的图像
      • GIF格式
        • 支持静态格式和动态格式
        • 动态图片有多幅图片保存为一个图片,循环显示,形成动画效果
        • 只支持256色,适用于色彩简单,颜色较少的小图像

3.2 Pillow图像处理库-其他有(skimage,cv2)

  • Pillow图像库的概念
    Pillow是Python里的图像处理库(PIL:Python Image Library)提供了广泛的文件格式支持,强大的处理能力,主要包括图像存储、图像显示、格式转换以及基本的图像处理操作等。结合matplotlib的子库pyplot库显示图像
  • 图像操作
    • Image.open():打开图像获取图像对象
    • 图像对象.save(文件路径):保存图像
    • 图像对象的主要属性
      • 图像对象.format:图像格式
      • 图像对象.size:图像尺寸
      • 图像对象.mode:色彩模式
    • pyplot.imshow(image对象/numpy数组):对图像进行处理并显示格式
    • pyplot.show():将图像进行处理
    • 转换图像的色彩模式
      在这里插入图片描述
  • 颜色通道的分离与合并
    split函数是将彩色图像分离成三种颜色RGB,然后可以通过merge函数将这三个RGB图像进行合并成彩色图像
    split函数是将彩色图像分离成三种颜色RGB,然后可以通过merge函数将这三个RGB图像进行合并成彩色图像
  • 图像对象在计算机中的存储原理
    计算机处理图像时,有时先把图像转换成数组,数组中的元素对应图像中的每个像素,然后进行逐像素地处理
  • np.array(图像对象):将图像对象转换成数组
  • 对图像的缩放、旋转和镜像
    • 缩放图像
      在这里插入图片描述

    • 图像旋转
      在这里插入图片描述
      在这里插入图片描述

  • 剪裁图像
    在这里插入图片描述
    在这里插入图片描述

3.3 手写图像数据集

在这里插入图片描述

4 TensorFlow基础

#更新到最新版本
pip install --uptrade tensorflow
pip install --upgrade tensorflow-gpu 
#查看版本号
import tensorflow as tf
print(tf.__version__)
  • 4.1 TensorFlow2.4的新特性
    • 参数服务器策略
    • 多工作镜像策略
    • 混合精度
    • 优化器
    • GPU支持
  • 4.2 TensorFlow的丰富开源社区(GitHub)
    • 图像分类
    • 音频处理
    • 推荐系统
    • 自然语言处理
  • 4.3 python列表list、numpy数组、TensorFlow张量对比
    在这里插入图片描述
  • 4.4 TensorFlow与numpy关系
    TensorFlow的基本运算、参数命名、运算规则、API设计等于numpy非常相近。
    在TensorFlow中,所有的运算都是在张量之间进行的
    Numpy数组仅仅作为输入和输出来使用
    张量可以运行与GPU ,CPU,而numpy只能在CPU中运行
  • 4.5 创建Tensor对象
    • 创建格式
      在这里插入图片描述

    • 创建全0张量和全1张量
      tf.zeros(shape,dtype = tf.float32)
      tf.ones(shape,dtype = tf.float32)

    • 创建元素值都相同的张量–tf.fill()函数
      tf.fill(dims,value):dims是形状相当于shape
      tf.constant(value,shape)
      以上两种方法都可以达到相同的效果

    • 创建随机数张量–正态分布
      tf.random.normal(shape,mean,stddev,dtype)
      shape:形状;mean:均值(0);stddev(1):标准差

    • 创建随机数张量–截断正态分布
      tf.random.truncated_normal(shape,mean,stddev,dtype)
      返回一个截断正态分布,截断标准是2倍的标准差

    • 设置随机数种子
      tf.random.set_seed()函数

    • 创建均匀分布张量
      tf.random,uniform()汗水

    • 随机打乱张量
      tf.random.shuffle()函数

    • 创建序列:tf.range(start,limit,delta=1,dtype)函数

    • 创建张量总结
      在这里插入图片描述

    • 张量元素的数据类型
      在这里插入图片描述

    • 张量的属性-----ndim:维度,shape:形状,dtype:类型

    • tf.constant():改变张量中的数据类型
      在这里插入图片描述

    • 张量的维度变换

      import tensorflow as tf
      a=tf.range(24)#生成序列张量:一维张量
      b=tf.reshape(a,[2,3,4])#将张量转换维度成三维张量
      
    • 多维张量的轴:张量的维度
      在这里插入图片描述

    • 增加和删除张量的维度

      • 增加维度:tf.expand_dims(input,axis);
        input:传入的张量
        axis:增加的维度的序号
        在这里插入图片描述

      • 删除维度:tf.squeese(input,axis)
        input:传入的张量
        axis:删除的维度的序号

    • 交换维度:tf.transpose(a,perm)
      a:张量;perm:张量轴的顺序

    • 张量的拼接和分割

      • 拼接张量tf.contact(tensors,axis)
      • 分割张量(将一个张量拆分成多个张量,分割后维度不变):
      • tf.split(value,num_or_size_splits,axis)
        value;待分割的张量
        num_or_size_splits:分割的方案:分成几个张量
        axis:按照哪个轴分割
        在这里插入图片描述
    • 张量的堆叠和分解

      • 堆叠张量(合并张量时,创建一个新的维度):tf.stack(values,axis)
      • 分解张量(将张量分解成多个张量,分解后得到的每个张量和原来的张量相比,维数都少了一维):tf.unstack(valus,axis)
    • 张量的部分采样

      • 索引和切片
        • 索引:对张量中元素进行获取
        • 切片:对张量进行截取【起始位置:结束位置:步长】
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述
          在这里插入图片描述
    • 张量运算

      • 基本数学运算
        在这里插入图片描述
      • 幂指对数运算
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
      • 其他运算
        在这里插入图片描述
      • 三角函数和反三角函数运算
        在这里插入图片描述
      • 重载运算符
        在这里插入图片描述
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值