- 博客(100)
- 资源 (1)
- 收藏
- 关注
原创 pytorch学习13:实现LetNet和学习nn.Module相关基本操作
用pytorch实现经典的LeNet网络。网络结构图:模型建立代码LeNet包含如下层:二维卷积层([32,32]→[6,28,28])([32,32] \rightarrow [6,28,28])([32,32]→[6,28,28]),激活函数relurelurelu池化层(→[6,14,14])(\rightarrow [6,14,14])(→[6,14,14])二维卷积层(→[16,10,10])(\rightarrow [16,10,10])(→[16,10,10]),激活函数rel
2021-08-21 21:27:35
554
原创 pytorch学习12:自动求导
autograd.grad示例:使用损失函数为均方差原函数形式为:y=wx+by = wx+by=wx+bimport torch.nn.functional as Fimport torchx = torch.tensor(2)# 可以在初始化时声明需要参数# 即设置 requires_grad=True# 若此时不声明,则需要执行 w.requires_grad_() 声明w = torch.full([1], 2, requires_grad=True, dtype=torch.
2021-08-16 21:11:32
230
原创 pytorch学习11:where 和 gather
wherewhere语法:torch.where(condition, x, y)要求:condition、x、y矩阵的阶数(shape)必须相同,返回值也是相同阶数的句子condition:条件矩阵,当元素为 True 时,填入 x 中对应的元素,否则填入 y 中对应的元素x:condition中元素为 True 时将从 x 中选取元素y:condition中元素为 False 时将从 y 中选取元素示例一:c = max(a, b)import torcha = torch.ran
2021-08-06 12:27:36
422
原创 pytorch学习10:统计运算
范数 normimport torcha = torch.ones(8)b = torch.ones(2, 4)c = torch.ones(2, 3, 4)print("a:\n{}".format(a))print("b:\n{}".format(b))print("c:\n{}".format(c))# norm1 = sum(|x|)print("a.norm(1): {}, b.norm(1): {}, c.norm(1): {}".format( a.norm(1
2021-08-03 22:07:42
183
原创 pytorch学习09:矩阵基本运算
四则运算import torcha = torch.tensor([ [1,2], [3,4]])b = torch.tensor([ [10, 20]])# 加print("torch.all(torch.eq(a+b, torch.add(a,b))):", torch.all(torch.eq(a+b, torch.add(a,b))))print("a+b:\n{}\n".format(a+b))# 减print("torch.all(
2021-08-03 22:03:50
934
原创 pytorch学习08:拼接与拆分
catimport torcha1 = torch.rand(4, 3, 32, 32)a2 = torch.rand(5, 3, 32, 32)a3 = torch.rand(4, 1, 32, 32)a4 = torch.rand(4, 3, 16, 32)# 要求其他维度必须相同print("torch.cat([a1, a2], dim=0): ", torch.cat([a1, a2], dim=0).shape)print("torch.cat([a1, a3],
2021-07-30 22:13:26
1222
原创 pytorch学习07:Broadcast广播——自动扩展
pytorch在矩阵相加时,会自动根据矩阵的阶数进行自动扩展。在一定条件下,可用让阶数不同的矩阵相加。示例:import torcha1 = torch.tensor([ [0, 0, 0], [10, 10, 10], [20, 20, 20], [30, 30, 30]])b1 = torch.tensor([ [0, 1, 2], [0, 1, 2], [0, 1, 2], [0, 1, 2]])b2 = torch
2021-07-30 22:09:02
546
1
原创 pytorch学习06:Tensor维度变换
view reshape 重塑import torcha = torch.rand(4, 1, 28, 28)print("a.shape:", a.shape)print("a.view(4, 28*28):", a.view(4, 28*28).shape)print("a.view(4*28, 28):", a.view(4*28, 28).shape)print("a.view(4, 28, 28):", a.view(4, 28, 28).shape)print("a.resha
2021-07-28 21:58:53
447
原创 pytorch学习05:索引和切片
索引import torcha = torch.rand(4,3,28, 28)print("a.shape: ", a.shape)print("a[0].shape: ", a[0].shape)print("a[0][0].shape: ", a[0][0].shape)print("a[0, 0].shape: ", a[0, 0].shape)print("a[0, 1, 2, 3]: ", a[0, 1, 2, 3])取前N个或后N个import torcha = t
2021-07-28 21:54:25
419
原创 pytorch学习04:Tensor的创建
用 numpy 创建 tensor:import numpy as npimport torcha_np = np.array([2,3.3])a_tensor = torch.from_numpy(a_np)print("a_tensor: ", a_tensor)用 list 创建 tensorimport torcha_list = [2,3.3]a_torch = torch.tensor(a_list)print("a_torch: ", a_torch)print(
2021-07-25 22:35:11
725
4
原创 pytorch学习03:张量数据类型和一些操作
张量数据类型Data typedtypeCPU tensorGPU tensor32-bit floating pointtorch.float32 or torch.floattorch.FloatTensortorch.cuda.FloatTensor64-bit floating pointtorch.float64 or torch.doubletorch.DoubleTensortorch.cuda.DoubleTensor16-bit floa
2021-07-23 14:29:57
136
原创 pytorch学习02:手写数字识别
描述手写数字识别是一个深度学习中的经典案例,pytorch也提供了简单的**MNIST数据集(手写数字数据集)**加载方法,很适合初学者尝试。本次在各种教程的帮助下,实现了手写数字识别。介绍Utils实现了一些方便处理数据和展示数据的方法。加载数据使用pytorch自带的方法加载数据集,并作一定的数据处理,如更改数据格式和正则化。创建网络本次使用的网络的结构为三层全连接层,其中前两层的激活函数为 ReluReluRelu,最后一层的激活函数为 SoftmaxSoftmaxSoftmax。
2021-07-22 13:09:11
553
原创 pytorch学习01:梯度下降实现简单线性回归
描述梯度下降算法是深度学习的一个基础概念,基本思想是利用梯度来尝试寻找使损失函数得到最小值的参数,以达到接近真实未知函数的目的。本次利用python实现简单函数的梯度下降算法。目标函数形式为:y=wx+by=wx+by=wx+b损失函数形式为:Loss=∑(wx+b−y)2/N,N为x的数量Loss=\sum{(wx + b - y)^2}/N, N为x的数量Loss=∑(wx+b−y)2/N,N为x的数量梯度下降的目的:寻找使LossLossLoss函数值最小的 www 和 bbb 。梯
2021-07-20 22:40:31
250
2
原创 2. 两数相加
2. 两数相加给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例 1:输入:l1 = [2,4,3], l2 = [5,6,4]输出:[7,0,8]解释:342 + 465 = 807.示例 2:输入:l1 = [0], l2 = [0]输出:[0]示例 3:输入:l1 = [9,9,9,9,9,
2021-02-04 21:29:47
157
原创 SQL语句——权限管理
SQL语句授权数据库对象的创建者通常具有与该对象相关的所有权限。创建者可以通过GRANT语句向其他用户授予操作该对象的某些权限。GRANT格式如下:GRANT <权限> [, <权限>][ON <对象类型> <对象名>]TO <用户> [, <用户>][WITH GRANT OPTION][AS 用户]其中,WITH GRANT OPTION 指定向接收权限的安全主体提供向其他安全账户授予制定权限的能力。-- 给用户
2021-01-07 13:32:45
5501
1
原创 SQL语句——数据更新、修改、删除
SQL语句数据插入单行插入单行插入的INSERT语句格式如下:INSERT [INTO] <表名> [(<列名表>)] VALUES (值列表)其中,<列名表>中的列名必须是<表名>中有的列名,值列表中的值可以是常量也可以是NULL,各值之间用逗号分隔。INSERT语句用来新增一个符合表结构的数据行,将值列表数据按表中列定义(或<列表名>中指定的顺序)逐一赋给对应的列名。使用插入语句时应注意:值列表中的值与列名表中的列按位置顺序
2021-01-06 15:59:51
6248
原创 SQL语句——视图
SQL语句视图的概述试图(view)是数据库中的一个对象,它是数据库管理系统提供给用户的以多种角度观察数据库中数据的一种重要机制。它对应三种模式中的外模式。在SQL中,试图是基于SQL语句的结果集的可视化的表。视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。但视图与基本表不同,试图是一个虚表。数据库中只存储视图的定义,而不存储视图所包含的数据,这些数据仍存放在原来的基本表中。这种模式有两个好处:视图数据始终与基本表数据保持一致,当基本表发生变化时,从视
2021-01-06 14:13:36
6821
原创 SQL语句——查询
SQL 语句单表查询查询语句(SELECT)是数据库中最基本的和最重要的语句之一,其功能是从数据库中检索满足条件的数据。查询的数据源可以来自一张表,也可以来自多张表甚至来自视图,查询的结果是由0行(没有满足条件的数据)或多行记录组成的一个记录集合,并允许选择一个或多个字段作为输出字段。SELECT语句还可以对查询结果进行排序、汇总等。查询语句的基本结构可描述为:SELECT <目标列名序列> -- 需要哪些列 FROM <表名> [JOIN <表名> ON <
2021-01-05 18:05:30
100762
9
原创 SQL语句——数据库定义、架构定义、表的定义
SQL语句数据库的定义数据库的创建CREATE DATABASE <数据库名>[ON [PRIMARY] <文件> [, ...n] [, <文件组> [, ...n]] [ LOG ON <文件> [, ...n]]][COLLATE <校验方式名>][WITH <选项> [, ...n]][;]# 创建一个StudentCourse数据库CREATE DATABASE StudentCourse数据
2020-12-31 16:42:11
3636
2
原创 SQL 语言特点、功能和数据类型
SQL 语言SQL语言的特点一体化。SQL语言风格统一,可以完成数据库活动中的全部工作,包括创建数据库、定义模式、更改和查询数据以及安全控制和维护数据库等。高度非过程化。在使用SQL语句访问数据库时,用户没有必要告诉计算机如何一步步完成任务,只需要用SQL语言描述要做什么就行了,数据库管理系统会自动完成全部工作。面向集合的操作方式。SQL语言采用集合操作方式,不仅查询结果是记录的集合,而且插入、删除和更新操作也是记录的集合。提供多种方式使用。SQL既是自含式语言,又是嵌入式语言。自含式语言可以独
2020-12-31 14:18:33
9397
原创 关系数据模型、基本概念、关系模型的基本术语、关系代数
关系数据模型关系数据模型关系模型由关系模型的数据结构、关系模型的操作集合和关系模型的完整性约束三部分组成,这三部分也称为关系模型的三要素。数据结构关系数据模型源于数学,它用二维表来组织数据,而这个二维表在关系数据库中称为关系。关系数据库就是表或者说是关系的集合。数据操作关系数据模型给出了关系操作的能力,包括。传统的运算关系:并(union)、交(intersection)、差(difference)、广义迪卡尔积(extended cartesian product)。专门的关系运算:选择
2020-12-31 10:47:18
12424
原创 数据模型
数据模型数据与信息一般来说,数据库中的数据具有静态特征和动态特征两个方面:静态特征:数据的静态特征包括数据的基本结构、数据间的联系以及对数据取值范围的约束。动态特征:数据的动态特征是指对数据可以进行的操作以及操作规则。对数据库数据的操作主要有查询数据和更改数据,更改数据一般又包括插入、删除和更新数据。数据模型数据模型(Data Model) 是对现实世界数据特征的抽象。数据模型一般要满足三个方面的要求:能够真实地模拟现实世界。容易被人们理解。能够方便地在计算机上实现。数据模型也
2020-12-30 10:47:04
3753
1
原创 数据库基本概念
数据库基本概念基本概念数据(Data):是数据库中存储的基本对象。数据库(Database,DB):存放数据的仓库。数据库管理系统(Database Management System,DBMS):是一个专门用于实现对数据进行管理和维护的系统软件。主要有以下功能:1.数据库的建立与维护功能;2.数据定义功能;3.数据组织、存储和管理功能;4.数据操作功能;5.事物的管理和运行功能;6.其他功能,包括网络通信、数据传输等。数据库系统(Database System,DBS) :是指在计算机中引入数据
2020-12-29 20:31:52
277
1
原创 算法性能度量、算法的空间复杂度与时间复杂度概念与分析方法
简单算法分析度量算法效率的方法:事后分析法先将算法实现,然后输入适当的数据运行,测量其时间和空间上的开销。缺点: ①编写程序实现算法将花费较多的时间和精力,②所得实验结果依赖于计算机的软硬件等环境因素,有时容易掩盖算法本身的优劣。事前分析估算——渐进复杂度算法的时间复杂度:撇开于计算机软硬件有关的因素,影响算法时间代价的最主要因素是问题规模。问题规模是指输入量的多少。基本语句是执行次数与整个算法的执行次数成正比的语言,基本语句对算法运行时间贡献最大,是算法中最重要的操作。这
2020-11-18 21:55:38
973
原创 数据结构、抽象数据类型、数据类型、算法的基本概念
数据结构数据是信息的载体,在计算机科学中指所有能输入到计算机中,并能被计算机程序识别和处理的符号集合。可以将数据分为两大类:①整数、实数等数值数据,②文字、声音、图像等非等值数值。数据元素是数据的基本单位,在计算机程序中,通常作为一个整体进行考虑和处理。构成数据元素的不可分割的最小单位称为数据项。数据结构是指相互之间存在一定关系的数据元素之间的集合。按照视点不同,数据结构分为逻辑结构和存储结构。数据的逻辑结构是指数据元素之间逻辑关系的整体,按照数据元素之间的逻辑关系不同,数据结构可以分为以下四类:
2020-11-18 21:16:17
1518
原创 数据结构相关博客目录
数据结构相关博客目录数据结构基本概念及简单算法分析线性表单链表的类定义;单链表的插入与删除;带头结点的单链表循环链表的类定义;用循环链表解决约瑟夫问题双向链表的基本操作栈和队列栈的抽象数据类型;栈的链接存储表示队列的抽象数据类型;队列的链接存储表示树与森林二叉树的抽象数据类型二叉树的顺序表示;二叉树的链表存储表示二叉树的中序遍历;前序遍历;后序遍历(递归和非递归实现)不用栈和递归的二叉树中序遍历线索;中序线索化二叉树树的存储表示树与二叉树的转换;森林与二叉树的转换;森林的遍历
2020-11-18 20:41:35
544
原创 AOE网与关键路径、关键路径算法
AOE网与关键路径在一个表示工程的带权有向图中,用顶点表示事件,用有向边表示活动,边上的权值表示活动持续的时间,称这样的有向图为边表示活动的网,简称 AOE网(activity on edge network)。AOE网中没有入边的顶点称为源点,没有出边的顶点称为终点。AOE网具有以下两个性质:只有在进入某顶点的各种活动都已经结束,该顶点表示的事件才能发生。只有在某顶点所代表的事件发生后,从该顶点出发的活动才能开始。如果用AOE网络来表示一项工程,那么,仅仅考虑各个活动之间的优先关系还不够,更多
2020-11-18 20:07:31
2569
原创 AOV网与拓扑排序、拓扑排序算法
AOV网与拓扑排序AOV网在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,称这样的有向图为顶点表示活动的网,简称 AOV网(activity on vertex network)。AOV网中的弧表示了活动之间存在的某种制约关系。在AOV网中不能出现回路,否则意味着某活动的开始要以自己的完成为先决条件,显然,这是荒谬的。因此判断AOV网所代表的工程是否能顺利进行,即判断它是否存在回路。而测试AOV是否存在回路的方法,就是对AOV网进行拓扑排序。拓扑排序设 G=(V,E)G=(V
2020-11-16 20:54:49
1866
原创 最短路径、Dijkstra算法、Floyd算法
最短路径在非网图中,最短路径是指两个顶点之间经历的边数最少的路径,路径上的第一个顶点称为源点,最后一个顶点称为终点。在网图中,最短路径是指两点之间经历的边上的权值之和最少的路径。Dijkstra算法Dijkstra算法用于求单源点路径问题,问题描述如下:给定带权有向图 G=(V,E)G=(V,E)G=(V,E) 和源点 v∈Vv \in Vv∈V,求从v到G中其余各顶点的最短路径。迪杰斯特拉提出了一个按路径长度递增的次序产生最短路径的算法,其基本思想是:设置一个集合 S 存放已经找到最短路径的顶点
2020-11-14 22:00:39
420
原创 最小生成树、Prim算法、Kruskal算法
最小生成树设 G=(V,E)G = (V,E)G=(V,E) 是一个无向连通图,生成树上各边的权值之和称为该生成树的代价,在G的所有生成树中,代价最小的生成树叫最小生成树。MST性质最小生成树具有MST性质:假设 G=(V,E)G=(V,E)G=(V,E) 是一个无向连通网,U是顶点集合V的一个非空子集。若 (u,v)(u,v)(u,v)是一条具有最小权值的边,其中u∈U,v∈V−Uu \in U, v \in V-Uu∈U,v∈V−U,则必存在一棵包含边 (u,v)(u,v)(u,v) 的最小生成树
2020-11-12 22:24:48
323
2
原创 哈夫曼树及哈夫曼编码、哈夫曼算法
哈夫曼树及哈夫曼编码、哈夫曼算法哈夫曼树相关概念哈夫曼树也称最优二叉树在实际中有着广泛的应用。下面有几个相关概念。叶子结点的权值叶子节点的权值是对叶子结点赋予一个有意义的数值量。二叉树带权路径长度设二叉树具有n个带权的叶子结点,从根结点到各个叶子结点的路径长度与相应叶子结点权值的乘积之和叫做二叉树的带权路径长度,记为:WLP=∑k=1nwklkWLP = \sum\limits^n_{k=1}w_kl_kWLP=k=1∑nwklk,其中,wkw_kwk为第k个叶子结点的权值,lkl_kl
2020-11-12 20:09:49
1319
原创 树、森林与二叉树的转换,森林的遍历
树、森林与二叉树的转换从树的孩子兄弟表示法和二叉树的二叉链表示法可以看出,树的孩子兄弟表示法实质上是二叉树的二叉链表存储形式,第一个孩子指针和有兄弟指针分别相当于二叉链表的左孩子指针和右孩子指针。所以从物理结构上看,树的右孩子兄弟表示法和二叉树的二叉链表是相同的,只是解释不同。如树转换为二叉树将一棵树转换为二叉树的方法是:加线——树中所有相邻兄弟之间加一条线去线——对树中的每个结点,只保留它与第一个孩子结点之间的连线,删去它与其他孩子之间的连线层次调整——以根结点为中心,将树顺时针转动一定的
2020-11-10 21:36:08
2637
原创 树的存储结构
树的存储结构双亲表示法由树的定义可知,树中的每个节点都有且仅有一个双亲结点。根据这一特性,可以用一维数组来存储树的各个结点(一般按照层序存储),数组中的一个元素对应树中的一个结点,数组元素包括树中结点的数据信息以及该结点的双亲在数组中的下标。有①双亲表示法和②带有兄弟的双亲表示法两种常用结构。孩子表示法树的孩子表示法是一种基于链表的存储方式,主要形式有两种①多重链表表示法、②孩子链表表示法多重链表表示法:其中,首位存的是当前结点的值,后面是存孩子的地址,长度为树的度。孩子链表表示法:双
2020-11-10 21:09:05
513
1
原创 线索二叉树、中序线索二叉树的创建和遍历
线索二叉树按照某种遍历次序对二叉树进行遍历,可以把二叉树中的所有结点排成一个线性序列。在具体应用中,有时需要访问二叉树中的结点在某种遍历序列中的前驱和后继,此时,在存储结构中应保存结点在某种遍历序列中的前驱和后继。这些指向前驱和后继结点的指针称为线索,加上线索的二叉树称为线索二叉树,相应地,加上线索的二叉链表叫做线索链表。线索链表结构如下:字段:ltag, lchild, value, rchild, rtagltag={0,lchild指向该结点的左孩子1,lchild指向该节点的前驱rtag={0
2020-11-10 20:49:39
6178
2
原创 散列——Hash表
散列的概念散列技术、散列表、散列函数、散列地址所谓的查找实际上就是要确定关键码等于给定值的记录在查找结构中的存储位置。理想情况就是不经过任何比较,直接便能得到待查记录的存储位置,那就必须在记录的存储位置与它的关键码之间确立一个对应的关系HHH,使得每个关键码 key 和唯一的存储位置 H(key)H(key)H(key) 相对应。在查找时,根据这个确定的对应关系找到给定值 kkk 的映射 H(k)H(k)H(k) ,若集合中存在这个记录,则必定在 H(k)H(k)H(k) 位置上,这种查找技术叫做 散
2020-11-08 21:18:13
180
原创 平衡二叉树——AVL树
平衡二叉树平衡二叉树的定义平衡二叉树是一棵空的二叉排序树,或者是具有下列性质的二叉排序树根节点的左子树和右子树的深度最多相差1根节点的左子树和右子树也是平衡二叉树平衡因子结点的平衡因子是该节点左子树和右子树的深度之差,如下图,每个结点里所注的数字是该节点的平衡因子最小不平衡子树最小不平衡子树是指在平衡二叉树的构造过程中,以距离插入结点最近的、且平衡因子绝对值大于1的结点为根的子树。平衡化旋转LL型RR型LR型RL平衡树创建例子按{20,35,40,15,30,25
2020-11-08 20:23:39
276
原创 折半查找
折半查找算法思维折半查找是顺序查找通过每次减少一半的待选元素来提高查找速度算法设计循环执行下面操作指导待选元素数量为0对中间元素进行匹配若匹配,返回相关数据若不匹配,将待选元素数组以中间为界,缩小一半,回到 1算法实现// 折半查找/*arr:要查找的有序数组len:数组长度x:要查找的元素*/int search_binSearch(int* arr, int len, int x){ int low = 0, height = len-1; in
2020-11-06 19:42:16
174
C语言基础学习常用数据结构和算法
2020-12-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅