自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

清欢年岁

何求行客留,总有初心至白首

  • 博客(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

原创 [损失函数]:损失函数的整理

损失函数

2022-06-06 14:58:15 199 1

原创 [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&lt;=c&lt;=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&lt;E&gt; { 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关注的人

提示
确定要删除当前文章?
取消 删除