Git
[推荐教程](简介 - Git教程 - 廖雪峰的官方网站) 简介目前世界上最先进的分布式版本控制系统(没有之一) 场景你要用Microsoft Word写过长篇大论: 想删除一个段落,又怕将来想恢复找不回来怎么办?->手动保存一大堆版本 过了一周,你想找回被删除的文字,但是已经记不清删除前保存在哪个文件里了,只好一个一个文件去找 看着一堆乱七八糟的文件,想保留最新的一个,然后把其他的删掉,又怕哪天会用上,还不敢删 有些部分需要你的财务同事帮助填写,于是你把文件Copy到U盘里给她,一天后,同事再把Word文件传给你,此时,你必须想想,发给她之后到你收到她的文件期间,你作了哪些改动,得把你的改动和她的部分合并,真困难 于是你想,如果有一个软件,不但能自动帮我记录每次文件的改动,还可以让同事协作编辑,这样就不用自己管理一堆类似的文件了,也不需要把文件传来传去。如果想查看某次改动,只需要在软件里瞄一眼就可以,岂不是很方便? 由此诞生了Git,结束了手动管理多个“版本”的史前时代,进入到版本控制的20世纪 集中式 vs...
命令行
命令行GUI、CLICSGO就不是命令行软件 GUI: *Command-Line Interface,命令行界面,*命令行界面用鼠标双击会跳窗口的软件 CLI: Graphical User Interface,图形用户界面在终端里敲键盘才能用的软件 Type GUI CLI 浏览器 Chrome/Firefox w3m/lynx 图像处理 PhotoShop ImageMagick 视频编辑 Pr/Davinci resolve FFmpeg 文本编辑 VSCode/Sublime Vim/TECO 为什么要使用命令行因为我们用计算机的目的不同:程序员要写程序 而命令行比GUI更高效 比如apt install gcc一行就能安装完整的C语言编译工具 *example:*比较两个文件是否相同 命令行: 123文本文件的比较:vimdiff file1 file2非文本文件的比较:diff file1 file2很大的文件:md5sum file1...
赛博扫盲
...
线性回归的从零开始实现(深度学习)
虽然现代的深度学习框架几乎可以自动化地进行所有这些工作,但从零开始实现可以确保我们真正知道自己在做什么。 同时,了解更细致的工作原理将方便我们自定义模型、自定义层或自定义损失函数 生成数据集为了简单起见,我们将根据带有噪声的线性模型构造一个人造数据集。 任务使用这个有限样本的数据集来恢复这个模型的参数 生成一个包含1000个样本的数据集,每个样本包含从标准正态分布中采样的2个特征。 使用线性模型参数$\mathbf{w} = [2, -3.4]^\top$、$b = 4.2$和噪声项$\epsilon$生成数据集及其标签:$$\mathbf{y}= \mathbf{X} \mathbf{w} + b + \mathbf\epsilon$$$\epsilon$可以视为模型预测和标签时的潜在观测误差。在这里我们认为标准假设成立,即$\epsilon$服从均值为0的正态分布。为了简化问题,我们将标准差设为0.01。 123456789101112131415161718192021222324%matplotlib inlineimport...
线性回归(深度学习)
回归(regression)是能为一个或多个自变量与因变量之间关系建模的一类方法 线性回归(linear regression) 线性回归的基本元素 线性模型 损失函数 解析解 随机梯度下降 用模型进行预测 例子根据房屋的面积(平方英尺)和房龄(年)来估算房屋价格(美元)。 训练数据集(training data set) 或训练集(training set):房屋的销售价格、面积和房龄 样本(sample)/数据点(data point)或数据样本(data instance):每行数据 标签(label)或目标(target):试图预测的目标(比如预测房屋价格) 特征(feature)或协变量(covariate):预测所依据的自变量(面积和房龄) 线性模型$$\mathrm{price} = w_{\mathrm{area}} \cdot \mathrm{area} + w_{\mathrm{age}} \cdot \mathrm{age} +...
概率(深度学习)
简单地说,机器学习就是做出预测 概率是一种灵活的语言,用于说明我们的确定程度,并且它可以有效地应用于广泛的领域中 基本概率论掷骰子1234567891011121314%matplotlib inlineimport torchfrom torch.distributions import multinomialfrom d2l import torch as d2lfair_probs = torch.ones([6]) / 6multinomial.Multinomial(1, fair_probs).sample() # tensor([0., 0., 0., 1., 0., 0.])multinomial.Multinomial(10, fair_probs).sample() # tensor([1., 2., 2., 1., 1., 3.])# 将结果存储为32位浮点数以进行除法counts = multinomial.Multinomial(1000, fair_probs).sample()counts / 1000 # 相对频率作为估计值#...
微积分(深度学习)
安装 matplotlib 库和 d2l 库123conda activate d2lpip install matplotlibpip install d2l 验证安装1234import matplotlibprint(matplotlib.__version__)import d2lprint(d2l.__version__) 导数和微分假设我们有一个函数$f: \mathbb{R} \rightarrow \mathbb{R}$,其输入和输出都是标量,如果$f$的导数存在,这个极限被定义为:$$f’(x) = \lim_{h \rightarrow 0} \frac{f(x+h) - f(x)}{h}.$$如果$f’(a)$存在,则称$f$在$a$处是可微(differentiable)的。 1234567%matplotlib inline import numpy as npfrom matplotlib_inline import backend_inlinefrom d2l import torch as d2ldef f(x): ...
线性代数(深度学习)
标量标量由只有一个元素的张量表示 12345678import torchx = torch.tensor(3.0)y = torch.tensor(2.0)x + y, x * y, x / y, x**y// (tensor(5.), tensor(6.), tensor(1.5000), tensor(9.)) 向量向量可以被视为标量值组成的列表,这些标量值被称为向量的元素(element)或分量(component) 1234x = torch.arange(4)x// tensor([0, 1, 2, 3]) 访问通过张量的索引来访问任一元素 12x[3]// tensot(3) 长度、维度和形状向量的长度通常称为向量的维度(dimension) 访问张量长度: 12len(x)// 4 **形状(shape)**是一个元素组,列出了张量沿每个轴的长度(维数) 用张量表示一个向量(只有一个轴)时,形状只有一个元素 访问: 12x.shape// torch.Size([4]) 矩阵 创建矩阵 12345678A =...
数据操作(深度学习)
为了能够完成各种数据操作,我们需要某种方法来存储和操作数据。 通常,我们需要做两件重要的事: (1)获取、存储数据; (2)将数据读入计算机后对其进行处理 张量n维数组,也叫张量(tensor)。与Numpy的ndarray类似,但深度学习框架又比Numpy的ndarray多一些重要功能: GPU支持加速计算,而NumPy仅支持CPU计算 张量类支持自动微分 创建张量用 arange 创建一个行向量 x:包含以0开始的前12个整数,它们默认创建为整数。也可指定创建类型为浮点数。 1x = torch.arange(12) 访问张量形状1x.shape 张量中元素总数1x.numel() 改变张量形状1X = x.reshape(3, 4) 可以以通过-1来调用此自动计算出维度的功能: x.reshape(-1, 4)或x.reshape(3, -1)来取代上面的代码 初始化张量使用全0、全1、其他常量,或者从特定分布中随机采样的数字 全0 1torch.zeros((2, 3, 4)) 全1 1torch.ones((2, 3,...