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

news2025/1/11 20:00:39

代码仓库

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()

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云计算概述(发展过程、定义、发展阶段、云计算榜单)(一)

云计算概述(一) (发展过程、定义、发展阶段、云计算榜单) 本文目录: 零、00时光宝盒 一、前言 二、云计算的发展过程 三、云计算的定义 四、云计算发展阶段 五、云计算公司榜单看云计算兴衰 六、参考资料 零、0…

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)二

第四部分、字符串,数据结构中的串存储结构 串存储结构,也就是存储字符串的数据结构。 很明显,字符串之间的逻辑关系也是“一对一”,用线性表的思维不难想出,串存储结构也有顺序存储和链式存储。 提到字符串&#xff…

《SPSS统计学基础与实证研究应用精解》视频讲解:SPSS运行环境设置

《SPSS统计学基础与实证研究应用精解》1.8 视频讲解 视频为《SPSS统计学基础与实证研究应用精解》张甜 杨维忠著 清华大学出版社 一书的随书赠送视频讲解1.6节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。本书旨在手把手教会使…

【机器学习300问】8、为什么要设计代价函数(损失函数)?它有什么用?

一、先介绍一下线性回归模型 (1)基本概念理解 文字解释:线性回归模型顾名思义,他处理的回归问题,是监督学习的一种。线性回归模型是一种预测模型,其基础是假设目标值和输入值之间存在线性关系。通过一条最…

矩阵快速幂技巧练习(一)— 经典牛问题

上一篇文章简单介绍了斐波那契数列的矩阵乘法,并做了一个小推广,这篇文章来小试牛刀,做一个经典的练习题。 求斐波那契数列矩阵乘法的方法 题目 第一年农场有一只成熟的母牛A,往后的每年: 每一只成熟的母牛都会生一只…

websocket项目 聊天室

1.项目概述 这个项目是一个基本的实时聊天应用,适用于小型团队或群体。提供了多个聊天室供用户选择。可以通过该代码进行进一步的扩展和定制,例如添加聊天机器人、改进界面等。 2.技术栈 flask,boostrapt,websocket&#xff0c…

【Rust】get_local_info 0.2.4发布

发布0.2.4,修正0.2.3([我的Rust库更新]get_local_info 0.2.3-CSDN博客)中存在的峰值算法bug,现已提交力扣并通过,耗时0ms

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

2. 感知机 感知机(perceptron)是由美国学者 Frank Rosenblatt 在 1957 年提出的。它作为神经网络(深度学习)的起源的算法,是学习神经网络和深度学习的重要一环 严格地说,本章所说的感知机应该称为‘人工神经元’或‘朴素感知机’&…

排序算法8----归并排序(非递归)(C)

1、介绍 归并排序既可以是内排序(在内存上的数据排序),也可以是外排序(磁盘上)(硬盘)(在文件中的数据排序)。 其他排序一般都是内排序。 区别于快速排序的非递归&#xf…

uni-app的学习【第三节】

五 运行环境判断与跨端兼容 uniapp为开发者提供了一系列基础组件,类似HTML里的基础标签元素,但uni-app的组件与HTML不同,而是与小程序相同,更适合手机端使用。 虽然不推荐使用 HTML 标签,但实际上如果开发者写了`div`等标签,在编译到非H5平台时也会被编译器转换为 `view`…

爬虫-8-数据存储-mysql

#mysql占空间最小吧,数据存储没问题吧 (//∇//)

Flowable:BpmnModel API

之前都是使用工具在绘制流程图,但是还是很少去认真的去看这个xml,有时候我们要从xml中分析获取一些结果,这个时候就要对xml及对应的api有足够的认识。 一:重新认识bpmn definitions:根节点用于定义流程。 bpmndi:BPMND…

台式OLED透明屏的6大基本要素

台式 OLED 透明屏作为一种创新的显示技术,正逐渐走进人们的视野。本文将为您全面介绍台式 OLED 透明屏的各个方面,包括类别、尺寸、技术参数原理、应用、主要厂家(尼伽)以及价格因素。 一、类别台式 OLED 透明屏根据不同的需求和应…

Java 实现双链表

文章目录 双链表(Doubly Linked List)是一种常用的数据结构,它与单链表相似,但每个节点除了包含指向下一个节点的指针外,还包含一个指向前一个节点的指针。 双链表的节点由三部分组成:数据域(存…

帆软报表11.0.19增加postgres数据源方案

项目使用postgres数据库,帆软报表集成开发时需要手工增加该数据源。 https://help.fanruan.com/finereport/doc-view-2563.html 但增加数据源后测试报告无此驱动,经查看文档,现在是通过驱动管理来上传, 但新版又不允许上传驱动JAR…

威尔·库尔特《趣学贝叶斯统计:橡皮鸭、乐高和星球大战中的统计学》学习笔记(1):以A/B测试为例学习贝叶斯统计

主要是新学期的概率论的作业要求:Write a summary (no more than of a page) of your experience with an application of probability to a real-life situation (e.g., an engineering problem. –How was probability used to model the phenomena/situation?…

力扣刷题(无重复字符的最长子串)

3. 无重复字符的最长子串https://leetcode.cn/problems/longest-substring-without-repeating-characters/ 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是…

【Emgu.CV教程】5.3、几何变换之金字塔变换

这一段文字描述来自百度百科: 图像金字塔是图像多尺度表达的一种,是一种以多分辨率来解释图像的有效但概念简单的结构。一幅图像的图像金字塔是一系列以金字塔形状(自下而上)逐步降低,且来源于同一张原始图的图像分辨率…

6、CLIP:连接文本和视觉世界的预训练模型

目录 一、论文题目 二、背景与动机 三、创新与卖点 四、技术细节 模型结构 简易代码 clip实现zero shot分类 五、为什么是CLIP?为什么是对比学习? 六、一些资料 在人工智能领域,文本和图像是两个极其重要的数据形式。传统上,机器学…

python 集合的详细用法

当前版本: Python 3.8.4 简介 Python中的集合是一种无序、可哈希的且不重复的数据类型,用于存储唯一的元素。集合的实现基于哈希表,因此在插入、查找和删除元素时具有高效性能。集合的每个元素都必须是不可变的,可以是数字、字符…