[笔记]深度学习入门 基于Python的理论与实现(一)

代码仓库

gitee

1. python 入门

1.5之前是python安装和基础语法, 我直接跳过了

1.5 Numpy

深度学习中经常出现数组和矩阵运算,Numpy 的数组类 numpy.array 提供了很多便捷的方法

1.5.1 导入 Numpy

import numpy as np

1.5.2 生成 Numpy 数组

np.array(),接收 python 列表,生成 Numpy 数组

x = np.array([1.0, 2.0, 3.0])
print(x)
print(type(x))

1.5.3 Numpy 的数学运算

x = np.array([1.0, 2.0, 3.0])
y = np.array([2.0, 4.0, 6.0])

print(x + y)
print(x - y)
print(x * y)
print(x / y)

需要注意,用于计算的数组的元素个数要相同

‘对应元素的’的英文是 element-wise,而 numpy 不仅可以进行 element-wise 运算,还可以和单一的数值(标量)组合起来进行计算。此时,需要在
numpy 数组的各个元素和标量之间进行计算,这个功能也称为广播

x = np.array([1.0, 2.0, 3.0])
print(x / 2.0)

1.5.4 Numpy 的 N 维数组

numpy 可以生成多维数组

A = np.array([[1, 2], [3, 4]])
print(A)
print(A.shape)
print(A.dtype)

shape 可以查看矩阵的形状,dtype 可以查看矩阵元素的数据类型

B = np.array([[3, 0], [0, 6]])
print(A + B)
print(A * B)

矩阵运算可以在相同形状的矩阵间以对应元素的方式进行。也可以通过标量(单一数值)对矩阵进行算术运算。这也是基于广播的功能

print(A)
print(A * 10)

数学上将一维数组称为‘向量’,将二维数组称为‘矩阵’,将一般化后的向量或矩阵等统称为‘张量’(tensor)。本书将二维数组称为矩阵,三维及以上称为‘张量’或‘多维数组’

1.5.5 广播

numpy 中形状不同的数组之间也可以进行运算。之前的例子中,2x2 的矩阵和标量 10 之间进行了乘法运算。这个过程中,标量 10 被扩展成
2x2 的形状,然后再与矩阵 A 进行乘法运算。这个功能就是广播

在这里插入图片描述
在这里插入图片描述

1.5.6 访问元素

X = np.array([[51, 55], [14, 19], [0, 4]])
print(X)
print(X[0])  # 第0行
print(X[0][1])  # (0,1)的元素

使用 for 遍历

for row in X:
print(row)

使用数组访问

X = X.flatten()  # 将X转为一维数组
print(X)
print(X[np.array([0, 2, 4])]) # 获取索引为0、2、4的元素

通过这个标记法,可以获取满足一定条件的元素。例如,获取 x 中大于 15 的元素

print(X > 15)
print(X[X > 15])

通过不等号得到了布尔型数组,并通过布尔型数组取出 X 的各个元素(取出 True 对应的元素)

  • python 等动态语言一般比 c 和 c++等静态语言(编译型)运算速度慢,所以很多追求性能的场景,人们用 c、c++编写,然后让 python
    调用,numpy 也是如此

1.6 Matplotlib

图形绘制和可视化的库

1.6.1 绘制简单图形

sin 函数曲线

import numpy as np
import matplotlib.pyplot as plt

# 生成数据
x = np.arange(0, 6, 0.1)  # 以0.1为步长(单位),生成0到6的数据
y = np.sin(x)

# 绘制图形
plt.plot(x, y)
plt.show()

在这里插入图片描述

1.6.2 pyplot 的功能

在刚才的 sin 函数图形中追加 cos 函数的图形,并尝试使用 pyplot 的添加标题和 x 轴标签名等其他功能

import numpy as np
import matplotlib.pyplot as plt

plt.switch_backend('TkAgg')
# 绘制sin函数曲线
# 生成数据
x = np.arange(0, 6, 0.1)  # 以0.1为步长(单位),生成0到6的数据
y1 = np.sin(x)
y2 = np.cos(x)

# 绘制图形
plt.plot(x, y1, label='cos')
plt.plot(x, y2, linestyle='--', label='cos')  # 用虚线绘制 
plt.xlabel('x')  # x轴标签
plt.ylabel('y')  # y轴标签
plt.title('sin & cos')  # 标题
plt.legend()
plt.show()

在这里插入图片描述

1.6.3 显示图像

pyplot 提供了显示图形的方法 imshow()。此外,还可以使用 matplotlib.image 里的 imread() 读取图像

import matplotlib.pyplot as plt
from matplotlib.image import imread

img = imread('lena.jpg')  # 读入图像(设定合适的路径)
plt.imshow(img)

plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/324967.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# wpf 实现任意控件(包括窗口)更多调整大小功能

WPF拖动改变大小系列 第一节 Grid内控件拖动调整大小 第二节 Canvas内控件拖动调整大小 第三节 窗口拖动调整大小 第四节 附加属性实现拖动调整大小 第五章 拓展更多调整大小功能(本章) 文章目录 WPF拖动改变大小系列前言一、添加的功能1、任意控件Drag…

Vant2组件的使用

组件地址:Vant 2 - Mobile UI Components built on VueMobile UI Components built on Vuehttps://vant-contrib.gitee.io/vant/v2/#/zh-CN/ 通过 npm 安装 # Vue 3 项目,安装最新版 Vant: npm i vant -S # Vue 2 项目,安装 Va…

transfomer中Decoder和Encoder的base_layer的源码实现

简介 Encoder和Decoder共同组成transfomer,分别对应图中左右浅绿色框内的部分. Encoder: 目的:将输入的特征图转换为一系列自注意力的输出。 工作原理:首先,通过卷积神经网络(CNN)提取输入图像的特征。然…

Java集合之LinkedList源码篇

☆* o(≧▽≦)o *☆嗨~我是小奥🍹 📄📄📄个人博客:小奥的博客 📄📄📄CSDN:个人CSDN 📙📙📙Github:传送门 📅&a…

自动化测试:fixture学得好,Pytest测试框架用到老

在pytest中,fixture是一种非常有用的特性,它允许我们在测试函数中注入数据或状态,以便进行测试。而参数化则是fixture的一个特性,它允许我们将不同的数据传递给fixture,从而进行多次测试。 本文将介绍如何在pytest中使…

任务14:使用MapReduce提取全国每年最低/最高气温

任务描述 知识点: 使用MapReduce提取数据 重 点: 开发MapReduce程序统计每年每个月的最低气温统计每年每个月的最高气温 内 容: 使用IDEA创建一个MapReduce项目开发MapReduce程序使用MapReduce统计每年每个月的最低气温使用MapReduce…

docker搭建SSH镜像、systemctl镜像、nginx镜像、tomcat镜像

目录 一、SSH镜像 二、systemctl镜像 三、nginx镜像 四、tomcat镜像 五、mysql镜像 一、SSH镜像 1、开启ip转发功能 vim /etc/sysctl.conf net.ipv4.ip_forward 1sysctl -psystemctl restart docker 2、 cd /opt/sshd/vim Dockerfile 3、生成镜像 4、启动容器并修改ro…

快速上手:Tomact集群配置(图文并茂)

目录 博客前言: 一.前期准备工作 1 .Tomcat集群架构图 2. 准备工具 二.配置集群 1.tomact配置 1.1首先解压一个tomact 1.2 解压后再准备2个tomcat 1.3修改第二个的端口号 ​编辑 1.4修改默认页面 ​编辑1.5启动8080的tomact 2.nginx 安装配置 2.1.安装…

Spring框架的背景学习

Spring 的前世今生 相信经历过不使用框架开发 Web 项目的 70 后、80 后都会有如此感触,如今的程序员开发项目太轻松了,基本只需要关心业务如何实现,通用技术问题只需要集成框架便可。早在 2007 年,一个基于 Java语言的开源框架正…

Onenote是什么?笔记软件Onenote使用指南:简介|功能|下载|替代软件

OneNote是什么? OneNote是微软公司开发的一款强大的笔记软件,它允许用户在各种设备上创建、组织和搜索笔记。OneNote以其灵活的布局和强大的编辑功能而闻名,它可以帮助个人和团队记录信息、规划项目、协作和分享知识。 *笔记软件OneNote On…

彝族民居一大特色——土掌房

彝族民居一大特色——土掌房在彝区,各地、各支系传承的居室建筑形式是多种多样的,并与当地的居住习俗有密切关联,从村寨的聚落到住宅的地址;从房间的分置到什物的堆放;从建筑结构到民居信仰和禁忌,都表现出…

【学习心得】图解Git命令

图解Git命令的图片是在Windows操作系统中的Git Bash里操作截图。关于Git的下载安装和理论学习大家可以先看看我写的另两篇文章。链接我放在下面啦: 【学习心得】Git快速上手_git学习心得-CSDN博客 【学习心得】Git深入学习-CSDN博客 一、初始化仓库 命令&#xff…

通用外设-W25Q64

前言 一、SPI通信 二、W25Q64基初时序 1.各种命令代码 2.代码 1.写使能指令 2.读取芯片是否忙碌状态并等待 3.写入数据 4.擦除函数操作 5.读取代码 三.验证 四.擦除说明 总结 前言 在单片机中一般32K FLASH就够用了,但是当我们使用图片或其他大量数据时…

支持华为GaussDB数据库的免费开源ERP:人力资源管理解决方案概述

开源智造所推出的Odoo SuperPeople数字化解决方案将HR和薪资数据与财务、项目规划、预算和采购流程连接起来,消除了多套系统给企业带来的信息孤岛问题。 ——复星集团 人力资源中心 高经理 一种更具吸引力、更有洞察力的人员管理方式 什么是开源智造Odoo的人力资源…

每日一练:LeeCode-102、二又树的层序遍历【二叉树】

本文是力扣LeeCode-102、二又树的层序遍历 学习与理解过程,本文仅做学习之用,对本题感兴趣的小伙伴可以出门左拐LeeCode。 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点&…

【数据结构】哈希表详解,举例说明 java中的 HashMap

一、哈希表(Hash Table)简介: 哈希表是一种数据结构,用于实现字典或映射等抽象数据类型。它通过把关键字映射到表中的一个位置来实现快速的数据检索。哈希表的基本思想是利用哈希函数将关键字映射到数组的索引位置上,…

java多线程(并发)夯实之路-volatile深入浅出

volatile volatile(易变关键字)可以用来修饰成员变量和静态成员变量,线程只能从主存中获取它的值,线程操作volatile变量都是直接操作主存 与synchronzied区别:synchronzied需要创建Monitor,属于重量级的操…

读书笔记——《未来简史》

前言 《未来简史》是以色列历史学家尤瓦尔赫拉利的人类简史三部曲之一。三部分别为《人类简史》《未来简史》《今日简史》。其中最为著名的当然是《人类简史》,非常宏大的一本关于人类文明历史的书籍,绝对可以刷新历史观,《人类简史》这本书…

DAY01_Spring—Spring框架介绍IOCSpring工厂模式

目录 1 什么是框架2 Spring框架2.1 Spring介绍2.2 MVC模型说明2.3 IOC思想2.3.1 问题说明2.3.2 IOC说明 3 Spring IOC具体实现3.1 环境准备3.1.1 关于JDK说明3.1.2 检查JDK环境配置 3.2 创建项目3.3 关于Maven 命令3.3.1 install 命令3.3.2 clean 命令 3.4 添加jar包文件3.4.1 …