LOADING

加载过慢请开启缓存 浏览器默认开启

Assassin笔记展示~

Assassin个人博客,记录笔记心得,主要内容为java后端

深度学习笔记0

深度学习

1. 数据操作 + 数据预处理

1.1 数据操作

tensor一维向量如果只有一个元素,等同于标量,其shape都是: torch.Size([])

import torch
x = torch.arange(12)
x.shape
x.numel()
# reshape是浅拷贝!
X = x.reshape(3, 4)
# 维度
X.ndim

torch.zeros((2, 3, 4))
torch.ones((2, 3, 4))
torch.randn(3, 4)

torch.tensor([[2, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])

x = torch.tensor([1.0, 2, 4, 8])
y = torch.tensor([2, 2, 2, 2])
x + y, x - y, x * y, x / y, x ** y  # **运算符是求幂运算
torch.exp(x) # 相当于是每个元素 -> e^(每个元素)

X = torch.arange(12, dtype=torch.float32).reshape((3,4))
Y = torch.tensor([[2.0, 1, 4, 3], [1, 2, 3, 4], [4, 3, 2, 1]])
# 第一个输出张量的轴-0长度(6)是两个输入张量轴-0长度的总和(3 + 3);
# 第二个输出张量的轴-1长度(8)是两个输入张量轴-1长度的总和(4 + 4)。
torch.cat((X, Y), dim=0), torch.cat((X, Y), dim=1)
# 对应位置是否相等,输出同样大小bool矩阵
X == Y
X.sum()
阅读全文

叮~这里有一封您的生日贺信!

2024/1/7

亲爱的Lcx,

🎉 生日快乐!! 🎉 在这特别的一天里,我想送上最真挚的祝福,愿你的生日充满欢笑、温馨和惊喜!

阅读全文

SpringCloud笔记

SpringCloud笔记

1. 版本

image-20230705192202008

阅读全文

算法笔记3

算法笔记 2023/7/24

数论基础

1. 欧几里得算法

又称辗转相除法

最大公约数简称gcd:Greatest Common Divisor

公式:gcd(a, b) = gcd(b, a mod b)

当b == 0时,a即为结果

如果gcd(a, b) == 1,则a与b互质

一般情况,默认参数a,b要为正数,gcd(a, b)也为正数

虽然数学上,通常规定gcd(-|a|, b) = gcd(|a|, b)

但是用欧几里得算法递归求gcd,若参数为负,则结果也可能为负,而且等于 -gcd(|a|, |b|),对于结果可能需要处理(取模,参考后面P1516 青蛙的约会解析)

int gcd(int a, int b) {
    if (b == 0) return a;
    return gcd(b, a % b);
}

2. 最大公倍数

简称:lcm:Least Common Multiple

**公式:gcd(a, b) * lcm(a, b) = a*b**

lcm(a, b) = gcd(a, b)/a * b

3. 扩展欧几里得算法

裴蜀定理:

a, b, c为整数,gcd(a, b)

方程 ax+by = c 有解的充要条件为, gcd(a, b) | c ,即gcd(a, b) 为c的因数

ax + by = 1 有解当且仅当整数a和b互素

阅读全文

算法笔记2

算法笔记 2023/7/21

高精度

对于大数,unsigned long long int可能也无法表示

需要用数组,字符串等才能表示

例题:

洛谷:阶乘之和

思路:

用unsigned long long int,只能过50%用例

所以必须用高精度解决

我这里采用vector表示大数,从左到右,是低位到高位(也即与正常的数,反转了一下)

对于加法:注意进位,模拟即可

对于乘法:

也可以模拟,将每一位相乘的结果加起来即可,时间复杂度

还可以用数学的方法:可以证明两个数相乘,长度分别为m,n(均大于0),他们

image-20230721171629194

通过找规律可以发现:

**比如123*456,对于索引i,j(第i、j位)**

如果索引从高位开始,num1[i] * num2[j]的本位在i+j+1,进位在i+j处,算出的结果为56088

如果从低位开始,num1[i] * num2[j]的本位在i+j,进位在i+j+1处,算出来就是反转的,结果为88065

由于我这里是反着存储大数,索引从低位开始,得到的结果是反转的,刚好也符合反转存储,也就是不需要改变结果顺序

如果是正向存储的字符串,索引是从高位开始,结果正向,也不需要改变结果顺序

也就是,该乘法对于索引的不同起始

因为正常进位,高位在左边,所以索引要-1,反向存储的话,高位在右边,进位索引+1

注意:别忘了去掉前导0

优化的乘法时间复杂度为:

阅读全文
1 ... 2 3 4 5
avatar
Assassin

Coding...