- 博客(181)
- 资源 (10)
- 问答 (1)
- 收藏
- 关注
原创 FP16 能表示多少离散数值
也就是 真实值 = 机器码 - offset,这里的 offset 是 15 = 01111,所以如果 exponent 的值为 11011,则其真实值。当 exponent 取值为 00000 时,指数取最小值 -14,有效数字的整数部分取 0,小数部分的取值范围。当 exponent 的取值为 11111 时,当且仅当 fraction 为 0 时,表示。其中 sign 表示符号位,0 表示正数,1表示负数。,fraction 表示有效数字的小数部分,整数部分为。用于限制有效数字的小数部分为 0,
2024-03-16 14:53:47
1380
原创 ubuntu 23.04 安装 中文输入法
依次打开 设置 -> 地区 & 语言 -> Manage Installed Languages,修改键盘输入法系统为 Fcitx 4,最后重启系统即可。命令进行配置,其界面如下所示。在这里可以配置不同输入法的切换快捷键,默认输入法等。刚安装系统后,这里只有一个输入法,所以接下来要安装中文输入法。进入官网:https://shurufa.sogou.com/linux,下载 x86_64 版本的 deb 包,参照官网安装。感想:当遇到问题时,先查看 系统文档 和 官方文档,获得第一手的信息。
2024-03-10 17:12:21
1122
原创 C++ cin 的过程
的 character 队列,然后 cin 开始从左往右读取,遇到第一个空格后,得到 12,是一个 int 类型,于是可以赋值给 a 变量,此时 cin 会忽略空格,获取下一个非空格和回车的字符,比如 23,是一个 int 类型,于是继续赋值给 b 变量。如果 12 后面的不是 23,而是一个字母 b,如下所示,则 cin 将指向 NULL,从而阻止继续从 character 队列中读取字符。中,等待用户输入,用户可以一直输入,直到输入了回车,这时一个以 ‘\n’ 结尾的字符串就会输入到。
2024-02-02 20:36:40
611
原创 openai 学习笔记 - 2
可以做下面两件事:1、将音频转化为对应语言的文本,2、将音频识别并翻译为英语。上传的文件最大支持 25M,支持如下类型:mp3、mp4、mpeg、mpga、4ma、wav 和 webm。拿到一段字符串的 embedding 后,可用于多个场景,例如搜索、聚类、推荐、分类等。相似的文本,会输出相似的 embeddings。如果这个任务太复杂,它们甚至可以使用工具,比如 运行代码 所需的 Code Interpreter 等。顾名思义,代表一个可以为用户执行任务的代理,比如 OpenAI 的 GPT-4。
2023-11-12 00:50:22
338
原创 ChatGPT 学习笔记 - 1
2、InstructGPT 是 ChatGPT 的默认语言模型,有 1.3B 的参数。在执行英语指令上,产生的结果比 GPT-3(175B 参数)更好。1、相比于 GPT-3,GPT-4 产生不允许内容的概率下降了 %82,产生内容的真实性上升了 40%;5、在 GPT3 的 prompt 中加入前缀,可以让 GPT3 进入遵循指令模型。3、InstructGPT 使用的技术是 RLHF(来自用户反馈的强化学习);4、两个目标:提高输出结果的有用性 和 真实性,降低有害性和偏差;
2023-11-10 08:00:41
363
原创 Flutter 中,ListView 中需要放置 ListView 需要怎么处理才高效?
你可能会看到 Flutter 建议你将内部的 ListView 的ShrinkWrap 属性设置为 True。因为 ShrinkWrap 属性会将 ListView 一次性全部填充,算出所有高度,如果内部 ListView 的数据量比较大,那将产生性能问题,会有很大的风险掉帧、jank 和 stutters。然后我们按照 Flutter 的提示,将内部的 ListView 加上 shrinkWrap 和 physics 属性如下。是之前的 inner ListView 需要显示的内容。
2023-08-12 17:11:02
916
原创 如何优雅地使用数学归纳法
前 n 项整数的和An=1+2+3+..+nA_n = 1 + 2 + 3 + .. + nAn=1+2+3+..+n递推式为A0=0,n=0An=An−1+n,n≥1\begin{aligned}A_0&=0,n=0\\A_n&= A_{n-1} + n, n\geq1\end{aligned}A0An=0,n=0=An−1+n,n≥1用数学归纳法证明如下命题为真:An=n×(n+1)2A_n = \frac{n\times(n+1)}{2}An
2022-03-19 21:47:16
496
原创 如何获取某个坍缩后的值在不同坐标系统中的位置
十进制一个十进制数 372,可以通过如下方式单独取出 3、7、2 三个数372%10=2372/10%10=7372/10/10%10=3\begin{aligned}372 \% 10 = 2 \\372 / 10 \% 10 = 7 \\372 / 10 / 10 \% 10 = 3\end{aligned}372%10=2372/10%10=7372/10/10%10=3在十进制系统中,372 可以看成 10 × 10 × 10 系统中的某个点,乘法表示一种维度的提升,所以这是一个
2022-03-15 08:44:43
258
原创 实体类、列表 和 管理类
实体类首先要有实体类,用来保存数据。用于表示领域信息,状态信息、动作信息、环境变量信息等。比如 Student、Teacher、Status 等实体类列表只有一个实体类往往缺乏扩展性,而拥有一个实体集合类,则可以兼容单个实体,同时拥有扩展性,所以需要一个实体类列表。比如 List<Student>、List<Teacher> 等。对列表的管理(增删改查)列表往往无法管理自身,只能被调用者管理,但是将这种管理权交给调用者是不安全的,所以需要一个统一管理的地方,并对外提供管理接
2022-02-19 16:53:19
676
原创 一元二次方程和复数
求解一元二次方程的思路求解一元二次方程 ax2+bx+c=0ax^2+bx+c=0ax2+bx+c=0 的思路,将该方程转化为 (x−x′)2=K(x-x')^2=K(x−x′)2=K,得到 x=±K+x′x = \pm\sqrt{K}+x'x=±K+x′所以有如下转化过程:ax2+bx+c=0x2+bax+ca=0x2+bax=−cax2+bax+b24a2=b24a2−ca(x+b2a)2=b2−4ac4a2ax^2+bx+c=0 \\x^2+\frac{b}{a}x+\frac{c}{a}
2021-11-21 20:10:02
5048
1
原创 归并排序时间复杂度为什么是NlgN
归并排序算法设置归并排序所化时间为 T(N)T(N)T(N),其中 NNN 为输入数据长度1、当 n == 1 时,返回,时间复杂度 1112、排序好左边 N2\frac{N}{2}2N 个元素,时间复杂度 T(N/2)T(N/2)T(N/2)3、排序好右边 N2\frac{N}{2}2N 个元素,时间复杂度 T(N/2)T(N/2)T(N/2)4、归并排序好的左边和右边元素,时间复杂度 θ(N)\theta(N)θ(N)设置归并排序所化时间为 T(N)T(N)T(N),其中 NNN 为输入
2021-09-20 20:16:17
1152
原创 android 中判断当前是否 debug 版本的方法
https://www.cnblogs.com/zhujiabin/p/6874508.htmlBuildConfig 的弊端当 A Module 依赖 B Module ,且 B Module 中存在如下代码,A 调用这段代码时,BuildCofig.DEBUG 会始终为 false。其关系图如下所示:public static void i(String tag, String msg) { if (BuildConfig.DEBUG) { Log.i(tag, msg); }}因
2021-02-05 16:43:48
6687
原创 LeakCanary 如何实现对内存泄露的监控?
一、Activity 生命周期回调方法 LifecycleCallbacks在 Application 中注册 ActivityLifecycleCallbacks 时,可以监听到每个 Activity 的生命周期方法的执行。当 Activity 被销毁时,会回调到 onActivityDestroyed 方法,此时便是 LeakCanary 开始检测 Activity 是否泄露的时机。LeakCanary 通过 RefWatcher.watch(activity) 方法,判断刚刚调用了 onDestro
2020-09-13 22:11:50
558
原创 为什么 JVM 不能确保所有垃圾都会被回收?
垃圾回收垃圾回收包含两个步骤,1、标记哪些内存是垃圾;2、内存回收一、标记算法1、引用计数算法 - 经典算法,但没有 JVM 采用 堆中的每个对象都有一个引用计数器,根据引用计数是否等于零来判断是否需要被回收; 优点:判断是否需要回收的效率高,不需要额外的线程做 GC 的工作; 缺点:无法识别循环引用的情况,增加额外开销;2、根搜索标记算法步骤:第一步:获取不可...
2020-09-05 17:15:47
540
原创 java 虚拟机如何分配线程的内存区域
JVM 内存区1、程序计数器保存每个线程当前执行到的字节码的位置program_counter[0] = 0x12DFEDprogram_counter[1] = 0xAb45EEprogram_counter[2] = 0xFBED3A2、Java 栈每个线程都有一个独立的 Java 栈,栈由栈帧组成,每个方法都是一个栈帧;栈帧的组成 1、操作数栈:operator_num_stack = stack() 2、运行时常量池:ref = rt_stack_pool() 3、方法
2020-09-05 13:08:24
438
原创 为什么使用 CE + Softmax 作为损失函数
假设假设有三个分类,模型输出值为 output = model(input),得到如下输出向量[o1,o2,o3][o_1,o_2,o_3][o1,o2,o3]表示每个类别的概率值,然后将该向量进行 softmax 操作,得到 [S1,S2,S3][S_1,S_2,S_3][S1,S2,S3],SiS_iSi 的计算公式为:Si=eoi∑eok=eoieo0+eo1+eo2S_i = \frac{e^{o_i}}{\sum e^{o_k}} = \frac{e^{o_i}}{e^
2020-08-17 18:56:51
1015
原创 快速排序 Quick Sort 的 思维过程
实现升序排序的 python 代码def sort(nums): quit_sort(nums, 0, len(nums) - 1) return numsdef quit_sort(nums, l, r): if r <= l: return # 现在左右两边找到分割点,使得分割点左边都比较小,分割点右边都比较大 j = partition(nums, l, r) quit_sort(nums, l, j - 1) q
2020-08-12 10:27:22
184
原创 torch.nn.CrossEntropyLoss 里面究竟发生了什么
假设假设有三个分类,模型输出值为 output = model(input),得到如下输出向量[o1,o2,o3][o_1,o_2,o_3][o1,o2,o3]假设 target 为 2, one hot 编码后为 [0,0,1][0,0,1][0,0,1]使用 torch.nn.CrossEntropyLoss 对 output 和 target 计算损失的过程如下所示:过程输出值 output 经过 Softmax 后的得到每个类别的预测值[S1,S2,S3][S_1, S_
2020-08-03 18:15:41
2342
4
原创 如何有效记住 vgg 和 resnet 的网络结构
首先记住基本结构:CBRPC - Conv 层,B - BN 层,R - ReLU 层,P - Pooling 层,MaxPooling 或者 AvgPool 或者 AdaptiveMaxPool使用基本结构 CBR 解析 VGGvgg 的对应层数和结构如下:cfg = [ # vgg11 'A': [64, 'M', 128, 'M', 256, 256, 'M', 512, 512, 'M', 512, 512, 'M'], # vgg13 'B': [64, 64, '
2020-07-29 19:15:37
2232
原创 目标检测,已知坐标,如何计算 IoU 值
假设有两个矩形框,其坐标情况如下表所示左上角右下角宽度高度矩形框1(x1,y1)(x_1,y_1)(x1,y1)(x2,y2)(x_2, y_2)(x2,y2)x2−x1x_2-x_1x2−x1y2−y1y_2-y_1y2−y1矩形框2(x1′,y1′)(x_1', y_1')(x1′,y1′)(x2′,y2′)(x_2', y_2')(x2′,y2′)x2′−x1′x_2'-x_1'x2′−x1′y2′−y1′y_2'-y_1
2020-07-29 17:32:44
1074
3
原创 损失函数 DiceLoss 的 Pytorch 实现
Pytorch 实现def dice_loss(preds, targets): """ preds: tensor of shape (N, C) targets: tensor of shape (N, C) """ assert preds.shape == targets.shape preds = preds.float() targets = targets.float() numer
2020-07-15 09:06:17
19676
19
原创 Xavier 参数初始化
目标是使得 前向计算 和 反向传播 前后值的 分布(均值 和 方差)相同 。我们将用到以下和方差相关的定理:假设有随机变量 xxx 和 www,它们都服从均值为 0,方差为 σ\sigmaσ 的分布,且相互独立,那么随机变量均值方差xxx0σ\sigmaσwww0σ\sigmaσw⋅xw \cdot xw⋅x0σ2\sigma^2σ2w⋅x+w⋅xw \cdot x + w \cdot xw⋅x+w⋅x02σ22\sigma^22σ2考虑一
2020-07-11 17:43:13
787
原创 数据的分布:均值和方差之间的关系,E x方 - E方 x
设有 NNN 个随机变量:x1,x2,x3,...xNx_1,x_2,x_3,...x_Nx1,x2,x3,...xN,则均值E=∑xiNE = \frac{\sum x_i}{N}E=N∑xi方差V=∑(E−x)2N=∑E2−2Ex−x2N=NE2−2E∑x−∑x2N=E2−2E∑xN−∑x2N=E2−2E2−E(x2)=E(x2)−E2(x)\begin{aligned}V&= \frac{\sum{(E- x)^2}}{N}\\& = \frac{\sum{
2020-07-11 15:25:43
19540
原创 pytorch 实现 lenet5 并用于 mnist 分类需要注意哪些问题?
首先,结合下面这个图,使用 pytorch 实现 letnet5 模型。计算每一层的 channel、kernel_size、stride 数值,得到如下所示:卷积层in_channelout_channelkernel_sizestridepaddingConv16512MaxPool6622Conv61651MaxPool161622Conv1612051全连接层输入输出bias
2020-06-27 17:43:19
619
原创 pytorch autograd 非叶子节点的梯度会保留么?
只有叶子节点的梯度得到保留,中间变量的梯度默认不保留叶子节点的值在求梯度前不允许更改,以及修改的方法只有叶子节点的梯度得到保留,中间变量的梯度默认不保留,除非使用 retain_grad() 方法# 叶子节点a = torch.tensor(2.0, requires_grad=True)b = a.exp()b.backward()a.grada 是叶子节点,b 不是叶子节点,当使用 b.backward() 求导时,只有叶子节点 a 的梯度 .grad 得到保留,非叶子节点 b .
2020-06-27 12:37:01
2013
原创 对 torch 中 dim 的总结和理解
pytorch 中,使用到 dim 参数的 api 都是跟集合有关的,比如 max(), min(), mean(), softmax() 等。当指定某个 dim 时,那么表示使用该维度的集合进行集合运算,比如一个 tensor 的 shape 为 (3, 4, 5),分别对应的 dim 如下所示dimshape031425当使用 max(dim=1) 时,表示使用第二个维度中全部四个元素中的每个元素参与求最大值计算,计算后的 shape 变为 (3,5),因为
2020-06-23 11:49:12
4019
原创 损失函数 Loss、梯度 grad、参数 ω 和 学习率 lr 之间的关系
举一个最简单的函数 y=x2y = x^2y=x2,梯度为 g(x)=∂y∂x=2xg(x) = \frac{\partial{y}}{\partial{x}} = 2xg(x)=∂x∂y=2x。设学习率为 lrlrlr,那么更新一次梯度后为:x1=x0−lr∗g(x0)=x0−lr∗2x0=(1−2∗lr)x0x_1 = x_0 - lr * g(x_0) = x_0 - lr * 2x_0 = (1 - 2 * lr)x_0x1=x0−lr∗g(x0)=x0−lr∗2x0=(1−2∗lr
2020-06-17 17:10:38
12108
4
原创 pytorch Conv2d 的宽高公式理解
pytorch 的二维卷积 torch.Conv2d,宽高计算公式如下所示(假设宽高相同,这里只讨论宽的公式,高的公式类似):Wout=Win+2×padding−dilation×(kernelsize−1)−1stride+1W_{out} = \frac{W_{in} + 2 \times \mathrm{padding} - \mathrm{dilation} \times (\mathrm{kernelsize}-1)-1}{\mathrm{stride}} + 1Wout=strideW
2020-06-04 16:35:36
2012
原创 torch flatten 的理解
torch.flatten(t, start_dim=0, end_dim=-1) 的实现原理如下。假设类型为 torch.tensor 的张量 t 的形状如下所示:(2,4,3,5,6),则 orch.flatten(t, 1, 3).shape 的结果为 (2, 60, 6)。将索引为 start_dim 和 end_dim 之间(包括该位置)的数量相乘,其余位置不变。因为默认 start_dim=0,end_dim=-1,所以 torch.flatten(t) 返回只有一维的数据。...
2020-05-19 17:45:48
24506
1
原创 无监督学习 之 高斯混合模型
假设:每个类都服从特定的统计分布高斯混合模型:一个模型,包含多个高斯分布混合在一起每个样本 都属于 现有的类,但是隶属度不同GMM 期望最大化算法1、初始化 kkk 个高斯分布 (默认 k-means) 给 kkk 个高斯分布赋予均值 μ\muμ 和方差 σ2\sigma^2σ22、软聚类 计算每个点对于每个类的隶属度E[Z1A]=N(Xi∣μA,σA2)N(Xi∣μA,σA2)+N(Xi∣μB,σB2)E[Z_1A]=\frac{N(X_i|\mu_A,\sigma_A^2)}{N
2020-05-11 11:02:45
982
原创 层次聚类法与密度聚类
一、层次聚类 - 单连接聚类(Single Link)Step:1、假设每个点是一个类(1,2,3,4,5,6,7,8)2、计算每个类两两之间的距离3、距离最短的类,合并为同一个类,如果类中有多个,根据不同层次算法选择的距离不同层次聚类算法距离计算sklearn单连接(Single Link)类间最短元素间的距离全连接(Complete Link)类间最远元素间的距离complete平均连接(Average Link)类间两两距离的平均值average
2020-05-11 10:43:45
908
原创 为什么 softmax 函数面对二分类问题时可以简化为 sigmoid 函数
将 二分类问题当成普通多分类问题,神经网络如下所示因为有两个分类,所以需要有两个输出,然后经过 softmax 后得到每个分类的预测概率。假设第一个分类的得分 S1=W1X+b1S_1=W_1X+b_1S1=W1X+b1,第二个分类得分 S2=W1X+b2S_2=W_1X+b_2S2=W1X+b2,则经过 softmax 层后得到 第一个分类的概率为P1=eS1eS1+eS2...
2020-04-26 17:48:37
1827
原创 为什么 Wx+b=0 和 Wx+b=1 之间的距离是 W 的模的倒数?
证明如下两条线的间隔为 1∣W∣\frac{1}{|W|}∣W∣11、同时移动两条直线,对结果的求解没有影响,所以可以将直线 Wx+b=0Wx+b=0Wx+b=0 移动到经过原点2、因为 Wx=0Wx=0Wx=0,所以直线上的点 x=a[−w2w1],a∈Rx=a\begin{bmatrix} -w_2\\w_1\end{bmatrix}, a \in \mathbb{R}x=a[−w...
2020-04-16 21:29:46
792
原创 线性代数 标量、向量、矩阵之间的求导
函数标量 fff函数向量(函数组成的向量) yyy函数矩阵(函数组成的矩阵) YYY标量 x正切向量向量 xxx梯度向量Jacobian 矩阵矩阵 XXX一、标量 fff 关于 标量 x 的导数dfdx\frac{\mathbb{d}f}{\mathbb{dx}}dxdf二、向量 yyy 关于 标量 x 的导数∂y∂x=[∂...
2020-04-15 15:33:47
460
原创 机器学习 模型复杂度曲线 和 学习曲线
模型的评估和选择控制变量法,EEE ∝\propto∝ 模型、数据量,其中 EEE 表示误差,一般转化为得分 Score, 0≤0 \leq0≤ Score ≤1\leq 1≤1EEE 和 MMM、DDD 这两个变量都有关复杂度曲线,E∝D0ME \propto D_0ME∝D0M,其中 D0D_0D0 表示 相同数据学习曲线,E∝M0DE \propto M_0DE∝M0D,其中 ...
2020-04-15 11:20:13
948
原创 MIT 线性代数习题
0、线性代数中的几何学Solve2x+y=3x−2y=−1\begin{aligned}2x + y &= 3 \\x -2y &=-1\end{aligned}2x+yx−2y=3=−1and find out is “row picture” and “column picture”1、核心思想概述Suppose AAA is a matrix su...
2020-04-14 20:48:37
3637
原创 关于用 numpy 计算矩阵特征向量的问题
设 A=[0.90.20.10.8]A = \begin{bmatrix} 0.9 & 0.2 \\ 0.1 & 0.8 \end{bmatrix}A=[0.90.10.20.8]则 A 的特征值 λ1=1\lambda_1 = 1λ1=1,由Ax1=λ1x1=x1Ax_1=\lambda_1x_1=x_1Ax1=λ1x1=x1 得到 x1=[21]x_1=\beg...
2020-03-08 11:35:33
792
4
原创 adb 启动 Activity、启动 Service、发送 Broadcast
一、adb启动activity: $ adb shell $ am start -n {包(package)名}/{包名}.{活动(activity)名称} 如:启动浏览器 $ am start -n com.android.browser/com.android.browser.BrowserActivity二、adb启动service: $ adb shell $ am sta
2020-03-06 17:24:11
665
原创 vim 删除行首和行尾空格
行末:$ 行首:^ 空格:\s行末空格:\s\+$ 行首空格:^\s\+删除行尾多个空格 : %s/\s\+$//g删除行首多个空格 :%s/^ \+//g
2020-03-06 17:09:49
986
ANDROID AIDL DEMO
2015-02-12
java 方法参数传值问题
2016-06-25
TA创建的收藏夹 TA关注的收藏夹
TA关注的人