- 博客(84)
- 收藏
- 关注
原创 [pytorch]访问模型所有层并查看参数
在应用中,有时候需要遍历模型的各个层,查看其梯度情况等,或者是加载模型的参数字典后要检查是否加载正确。常用的有如下几种方法:构造一个简单的模型:1、结果如下:2、可见,相比于上面的方法,这个方法没有层的名字。for中的_表示编号数字。在自监督学习中,经常会采用一种叫做的评价方法,这个方法是在finetune阶段固定住分类头之前的所有参数,只对分类头的参数进行训练,因此可以采用下面的代码对所有非分类头的参数设置为不需要梯度,这样在训练阶段就能固定住其参数了。...
2022-06-24 15:53:11
2209
1
原创 [python]生成器、迭代器
生成器迭代器和生成器yield类似于return,区别是下次执行的时候会从当前的迭代值继续向下迭代。可以让函数视为一个迭代器调用 fab(5) 不会执行 fab 函数,而是返回一个 iterable 对象!在 for 循环执行时,每次循环都会执行 fab 函数内部的代码,执行到 yield b 时,fab 函数就返回一个迭代值,下次迭代时,代码从 yield b 的下一条语句继续执行,而函数的本地变量看起来和上次中断执行前是完全一样的,于是函数继续执行,直到再次遇到 yield。迭代流程:...
2022-06-17 22:56:09
153
原创 [pytorch]torch.roll函数
torch中的roll函数可以用于张量的位置变换操作。博客推荐从上面的例子可以看出移动只发生在指定的维度上,在中就是图片的高、宽(其形式为) 的维度表示图片的H,也就是一个shape为的张量,shift=1表示这个维度上向下移动一个元素,多出的补到开头,而维度为图片的W,shift=-1表示这个维度上向上移动一个元素。...
2022-06-11 22:36:46
507
原创 [2021ICCV]Swin Transformer模型的一些模块
GitHubCSDN:将输入的图片进行切分:此模块用于划分窗口以及mask的生成,slice函数用于切分,划分好每个窗口所占的区域。再利用for循环,给每个patch打上数字标签,数字为同样的patch对应在同一个window里面。划分窗口以及逆操作。attn_mask:用在attention上面的mask。以右下角这块为例:通过这个减法可以得到每个窗口对应的区域,同一区域得到的元素为0,其它数值为不同的区域。最后在不为0的区域填入-100,:基本模块注意下roll方法 roll方
2022-06-10 23:52:15
585
原创 [pytorch]unfold操作
unfold函数是一种图片的分块操作,可以提取出卷积核扫过的元素,并不做其它的运算。我们平时调用pytorch的卷积接口,使用的是Conv,是一个完全封装好的过程。使用unfold,相当于将kernel滑动扫过的数据提取出来。就像ViT模型的patch embedding操作一样,可以得到一个patch中的所有元素。unfold(x)的输出行就是卷积核当前位置在这个矩阵上所扫过的元素(例如0、2、8、10就是每次卷积核最左上角扫过的元素)。按照列来看就是在所有channel上的每一块元素的concat。
2022-06-08 22:28:29
2624
原创 [ICLR2021] ViT模型的分析与实现
ViT模型将transformer模型的encoder应用在视觉任务上,取得了很好的效果。对于其基于timm库的实现进行一些注释和学习timm一些重要模块的解读:模块:该模块将输入的图片转化为token的形式,通常x的输入形式为,通过这里的操作可以将其转化为的形式,例如因为每个patch的大小为16*16 所有共有224/16=14 14 * 14=196个token。模块输入:输出:该模块是ViT模型的核心模块之一,用于计算注意力。传入的输入为经过patch化后的token序列。首先通过sh
2022-06-08 16:36:53
1126
原创 [pytorch] 爱因斯坦标示法
使用einops库的这几个函数,可以有效地替代pytorch中的一些形状变换的操作。还可以应用在Transformer模型的img2patch中:池化操作:最后是repate操作
2022-06-02 20:11:28
246
原创 [pytorch]gather、stack函数
gather函数:gather API这个函数在MAE模型中的random-masking函数中也有应用。gather函数可以理解为根据对应的索引从原始的tensor中选择tensor,首先来看2-D的情况:t = torch.tensor([[1,2],[3,4]])torch.gather(t,1,torch.tensor([[0,0],[1,0]])) #tensor([[1, 1],# [4, 3]])dim对应变化的索引位置,在上面的例子中dim=1,这就意味着是从t
2022-05-29 23:34:37
221
原创 [CVPR2022]MAE模型代码分析
MAE模型代码:Github# Copyright (c) Meta Platforms, Inc. and affiliates.# All rights reserved.# This source code is licensed under the license found in the# LICENSE file in the root directory of this source tree.# ------------------------------------------
2022-05-23 23:23:10
1136
原创 LeetCode习题笔记(387,383,242)
387class Solution: def firstUniqChar(self, s: str) -> int: for i in range(len(s)): for j in range(len(s)): if i!=j and s[j] == s[i]: break else: return i
2022-05-22 15:39:57
110
原创 LeetCode习题笔记(36,73)
36class Solution: def isValidSudoku(self, board: List[List[str]]) -> bool: # 1. 判断行中有无相同的数 row, col = len(board), len(board[0]) for i in range(row): num_set = set() for j in range(col):
2022-05-20 20:26:31
82
1
原创 LeetCode习题笔记(566、118)
566class Solution: def matrixReshape(self, mat: List[List[int]], r: int, c: int) -> List[List[int]]: new_mat = [] for i in range(len(mat)): for j in range(len(mat[i])): new_mat.append(mat[i][j])
2022-05-15 23:07:19
81
原创 LeetCode习题笔记(121 350 88 217 53)
121题:买卖股票class Solution: def maxProfit(self, prices: List[int]) -> int: n = len(prices) dp = [0]*len(prices) minprice = prices[0] for i in range(1,n): minprice = min(prices[i],minprice) dp [i]
2022-05-14 22:40:06
78
原创 数据结构与算法学习--线性
数组class myArray: def __init__(self, capacity): self._data = [] self._capacity = capacity def __getitem__(self, index): return self._data[index] def __setitem__(self, index, value): self._data[index] = value
2022-05-12 21:11:53
188
转载 [转载]矩阵的求导
原文:http://blog.sina.com.cn/s/blog_7959e7ed0100w2b3.html今天推导公式,发现居然有对矩阵的求导,狂汗–完全不会。不过还好网上有人总结了。吼吼,赶紧搬过来收藏备份。基本公式:Y = A * X --> DY/DX = A’Y = X * A --> DY/DX = AY = A’ * X * B --> DY/DX = ...
2020-04-01 20:46:58
715
原创 程序设计汉诺塔(递归)
#include<iostream>using namespace std;void Hanoi(int n,char src,char mid,char dest ){ if(n==1){ cout<<src<<"->"<<dest<<endl; return; } Hanoi(n-1,src,dest,mid)...
2019-07-24 15:24:37
771
原创 程序设计与算法(三)第2周测验(2019夏季)
1编程填空:学生信息处理程序输入输入数据为一行,包括:姓名,年龄,学号,第一学年平均成绩,第二学年平均成绩,第三学年平均成绩,第四学年平均成绩。其中姓名为由字母和空格组成的字符串(输入保证姓名不超过20个字符,并且空格不会出现在字符串两端),年龄、学号和学年平均成绩均为非负整数。信息之间用逗号隔开。输出输出一行数据,包括:姓名,年龄,学号,四年平均成绩。信息之间用逗号隔开。样例...
2019-07-23 14:45:56
550
原创 python 冒泡排序
a = [1,3,5,4,3,6,9,8]l = len(a)def bubbleSort(a): for i in range(l-1): for j in range(l-i-1): if(a[j]>a[j+1]): t = a[j] a[j] = a[j+1] ...
2019-05-23 23:31:16
136
原创 枚举算法——大道至简
中国大学MOOC 北京交通大学 算法设计与问题求解题目描述李老师的lucky number 是3,5和7,他爱屋及乌,还把所有质因数只有3,5,7的数字也认定为lucky number,比如9, 15, 21, 25等等。请聪明的你帮忙算一算小于等于x的lucky number有多少个?输入数据一个正整数x,3 =< x <= 1000000000000输出数据小于等于x的...
2019-05-22 21:43:12
1559
1
原创 Matlab傅里叶变换笔记
clcclearFs = 1000; %采样频率T = 1/Fs; %采样间隔N = 2000; %2000个点f1 = 5;f2 = 70;f3 = 200;t = (0:1:N-1)*T;%采集时间点t = t';x = 2 + 5*cos(2*pi*f1*t+pi/3) + 3*cos(2*pi*f2*t+pi/4) + 6*cos(2*pi*f3*t-pi/6)...
2019-04-08 21:03:22
410
原创 统计学习方法 感知机模型
# 统计学习方法第二章感知机例题import numpy as np;import matplotlib.pyplot as plt#样本数据sample_x = np.array([[3,3],[4,3],[1,1]])sample_y = np.array([1,1,-1])#为分类器设置初始参数w = np.array([0,0])b = 0Eta = 1 #学习率...
2019-04-04 20:09:22
232
原创 机器学习笔记 混淆矩阵
import pandas as pdimport numpy as npfrom sklearn.preprocessing import LabelEncoderfrom sklearn.cross_validation import train_test_split #交叉验证,拆分数据集from sklearn.preprocessing import StandardScale...
2019-03-31 21:09:43
491
原创 POJ 2811 熄灯问题
描述有一个由按钮组成的矩阵,其中每行有6个按钮,共5行。每个按钮的位置上有一盏灯。当按下一个按钮后,该按钮以及周围位置(上边、下边、左边、右边)的灯都会改变一次。即,如果灯原来是点亮的,就会被熄灭;如果灯原来是熄灭的,则会被点亮。在矩阵角上的按钮改变3盏灯的状态;在矩阵边上的按钮改变4盏灯的状态;其他的按钮改变5盏灯的状态。在上图中,左边矩阵中用X标记的按钮表示被按下,右边的矩阵表示灯状态的改...
2019-03-16 22:28:28
335
原创 POJ 2810 完美立方
总时间限制: 1000ms 内存限制: 65536kB描述形如a3= b3 + c3 + d3的等式被称为完美立方等式。例如123= 63 + 83 + 103 。编写一个程序,对任给的正整数N (N≤100),寻找所有的四元组(a, b, c, d),使得a3 = b3 + c3 + d3,其中a,b,c,d 大于 1, 小于等于N,且b<=c<=d。输入一个正整数N (N≤...
2019-03-15 22:31:31
592
2
原创 python学习笔记 寻找第N个莫尼森数
寻找第n个默尼森数。代码格式如下:def prime(num):…def monisen(no):… …return xxxprint(monisen(int(input()))) # 此处输入由系统自动完成不需要自己输入,只要写这样一条语句即可(3分)题目内容:找第n个默尼森数。P是素数且M也是素数,并且满足等式M=2P-1,则称M为默尼森数。例如,P=5,M=2P-1...
2019-03-12 22:31:06
1020
原创 P2881 [USACO07MAR]排名的牛Ranking the Cows
题目描述Each of Farmer John’s N cows (1 ≤ N ≤ 1,000) produces milk at a different positive rate, and FJ would like to order his cows according to these rates from the fastest milk producer to the slowest...
2019-03-11 23:38:15
198
原创 POJ 4080 Huffman编码树
4080:Huffman编码树查看 提交 统计 提示 提问总时间限制: 1000ms 内存限制: 65536kB描述构造一个具有n个外部节点的扩充二叉树,每个外部节点Ki有一个Wi对应,作为该外部节点的权。使得这个扩充二叉树的叶节点带权外部路径长度总和最小: Min( W1 * L1 + W2 * L2 + W3 * L3 ...
2019-03-05 21:48:37
1025
原创 机器学习笔记 seaborn笔记
import seaborn as snsimport numpy as npimport matplotlib as mplimport matplotlib.pyplot as pltimport pandas as pdimport warningswarnings.filterwarnings("ignore")sns.set(color_codes = True)np....
2019-03-03 23:40:26
157
原创 机器学习笔记 python numpy基础
import numpy as np#numpy中存储数据类型应该相同vector = np.array([5,10,15])#一维数组matrix = np.array([[2,3,4],[3,4,5]])#矩阵print(vector) #[ 5 10 15]print(matrix) #[[2 3 4] [3 4 5]]print(vector.shape) #维度...
2019-02-25 23:42:19
132
原创 Java学习笔记 Map
package cn.itcast.demo;import java.util.HashMap;import java.util.Map;/*Map集合:* 1.Map集合是一个双列集合,一个元素包含两个值* 2.Map集合中的元素,key与value的数据类型既可以相同也可以不同* 3.key不允许重复,而value可以* 4.Map集合中,key与value一一对应**...
2019-02-12 18:15:55
149
原创 Java学习笔记 Set集合
package cn.itcast.demo;/*java.util.Set接口和java.util.List接口一样,同样继承自Collection接口,它与Collection接口中的方法基本一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。与List接口不同的是,Set接口中元素无序,并且都会以某种规则保证存入的元素不出现重复。*/im...
2019-02-11 21:01:17
178
原创 Java学习笔记 List集合
package cn.itcast.demo;import java.util.ArrayList;import java.util.List;/** List的特点:* 有序的集合,存储元素和取出元素的顺序是一致的* 有索引,包含带索引方法* 允许存储重复的元素- public void add(int index, E element): 将指定的元素,添加到该集合中的指定...
2019-02-10 17:13:08
191
原创 Java学习笔记 泛型
package cn.itcast.demo;/*定义含有泛型的类,泛型是未知数据类型,可以接受任意数据类型* */public class GenericClass<E> { private E name; public E getName() { return name; } public void setName(E n...
2019-02-09 21:41:44
111
原创 Java学习笔记 迭代器Iterator及增强for循环
package cn.itcast.demo;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/*Iterator接口的常用方法如下:- public E next():返回迭代的下一个元素。- public boolean hasNext():如果仍有元素可以迭代,...
2019-02-08 10:31:22
175
原创 Java学习笔记 Collection集合
package cn.itcast.demo;import java.util.ArrayList;import java.util.Collection;/*- public boolean add(E e): 把给定的对象添加到当前集合中 。- public void clear() :清空集合中所有的元素。- public boolean remove(E e): 把给定的对...
2019-02-08 09:41:01
122
原创 Java学习笔记 StringBuilder类
package cn.itcast.demo03;/** 根据StringBuilder的API文档,常用构造方法有2个:- public StringBuilder():构造一个空的StringBuilder容器。- public StringBuilder(String str):构造一个StringBuilder容器,并将字符串添加进去。** */public class ...
2019-02-07 18:12:06
193
原创 Java学习笔记 System类
package cn.itcast.demo02;/*- public static long currentTimeMillis():返回以毫秒为单位的当前时间。- public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length):将数组中指定的数据拷贝到另一个数组中。*...
2019-02-07 17:34:18
102
原创 Java学习笔记 Data类
毫秒的概念package cn.itcast.demo02;//1天 = 86400秒 = 86400000毫秒/*类 Date 表示特定的瞬间,精确到毫秒。 */public class Date { public static void main(String[] args) { System.out.println(System.currentTimeMil...
2019-02-07 11:19:52
178
原创 Java学习笔记 Objects类
toString 方法package cn.itcast.demo;public class Person { private String name; private int age; public Person() { } public Person(String name, int age) { this.name = nam...
2019-02-07 10:13:27
140
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人