- 博客(86)
- 收藏
- 关注
原创 os课程记录
操作系统的系统调用应用程序是可执行文件(程序的二进制代码和数据)和其他数据文件,linux支持多种可执行文件格式,ELF(Executable Linkable Format)是最常用的格式。关于ELF二进制文件,它是操作系统的一个对象,操作系统提供API打开,读取,改写对应文件,可以使用vim,cat,xxd等命令查看这个可执行文件。查看ELF二进制文件。vi /bin/ls解析二进制文件。主要关注文件的header,包括文件内容的分布,指令集体系的结构,入口地址。readelf -h查
2022-02-27 22:23:37 389 1
原创 图像旋转90度。
题目描述给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。题解这个题目搞了一个多小时。思路已经想好了难在两个循环的次数上。我的思路跟官方的不太一样。因为需要原地转换,所以只能想到交换。注意交换规则是matrix[row][col]=matrix[col][n−row−1]matrix[row][col] =matrix[col][n-row-1]matri
2022-01-18 19:06:03 736
原创 torch-geometric的安装
torch-geometric 的安装。torch-geometric的安装必须要求版本对应,否则会出现很多麻烦的问题。比如:OSError: [WinError 127] 找不到指定的程序。所以安装之前,仔细检查一下cuda版本,pytorch的版本等等。此外,还要注意电脑安装的CUDA驱动和pytorch 中对CUDA支持包的版本是否对应,不对应同样会出错。# cuda是否可用,不必要。python -c "import torch; print(torch.cuda.is_availa
2021-11-26 14:15:31 3449
原创 SchNet+attention代码阅读记录
阅读SchNet的过程中,关于一些变量的定义和含义总是忘记,下面做一下记录和整理。class SchNet(torch.nn.Module): def __init__(self, hidden_channels, num_filters, num_interactions, num_gaussians, cutoff, readout='add', dipole, mean, std, atomref): super(SchNet, self).__init__() ... d
2021-09-15 17:23:50 1323
原创 latex跨行跨列表格
使用revtex模板的跨行跨列表格时候不需要使用\usepackage{booktabs},否则midrule,toprule这些线条不能够正常显示。因此需要使用自带的线条。下面记录一下我试用过的跨行跨列表格latex语法 \begin{table}[hb] \centering \caption{ \label{cutoff} nothing } \begin{ruledtabular} \begin{tabular}{c*{10}{c} }
2021-08-11 16:58:39 3266
原创 mac安装 pytorch geometric
官方安装教程地址:https://pytorch-geometric.readthedocs.io/en/latest/notes/installation.html使用pip安装,mac不能使用cuda,所以使用下面的命令:pip install torch-sparselatest+cpu -f https://pytorch-geometric.com/whl/torch-1.6.0.htmlpip install torch-clusterlatest+cpu -f https://pyto
2021-05-15 15:40:59 694
原创 linux网络连接问题诊断
ethtoolethtool是linux的网络驱动程序的诊断和调整工具,可获取网络设备的相关信息,包括连接状态、驱动版本、PCI 总线定位等等。ethtool 是用于查询及设置网卡参数的命令。使用方式:ethtool ethx //查询ethx网口基本设置,其中 x 是对应网卡的编号,如eth0、eth1等等ethtool –h //显示ethtool的命令帮助(help)ethtool –i ethX //查询ethX网口的相关信息 ethtool –d et
2021-05-14 22:32:33 2734 1
原创 AdelaiDet 安装报错
python tools/train_net.py –config-file configs/FCOS-Detection/R_50_1x.yaml –eval-only –num-gpus 2 OUTPUT_DIR training_dir/fcos_R_50_1x MODEL.WEIGHTS training_dir/fcos_R_50_1x/fcos_R_50_1x.pthFile “/home/xxx/AdelaiDet/adet/layers/bezier_align.py”, lin
2021-04-28 21:15:00 1720
原创 linux 命令
lspci显示所有的pci设备信息。通过pci总线连接的设备都可以显示,例如网卡,存储等等。lspci:显示所有的pci设备信息,包括设备的BDF,设备类型,厂商信息。lspci -n/-nn:显示设备的vendor厂商号和device设备号;显示厂商等信息和名称。lspci -b:以总线的角度来显示所有的IRQ和地址。根据我的观察,大部分信息和不带参数时显示一致,除了SR-IOV设备分配出的Virtual Function设备。如下示例:物理网卡PF(physical function )显示一直
2021-03-11 15:09:37 623
原创 gnuplot使用简介
GnuplotGnuplot 是一款科学作图软件,官方网站是 http://www.gnuplot.info/。使用建立程序文件(file.gnu)set term png color enh solidset logscale xset xlabel 'L (nm)'set ylabel "Cumulative kappa (W/mK)"set output "cumulative_300K_kappa.png"plot "cumulative_300K.dat" using 1:2 w
2020-12-07 20:56:03 1871
原创 python 处理xml文件
XML可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据。<?xml version="1.0" encoding="UTF-8"?><note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!
2020-10-13 00:12:59 1770 1
原创 python的并行计算
pool模块pool类能够提供指定数量的进程,供用户调用。当有新的请求提交到pool中时,如果池还没有满,就会创建一个新的进程来执行请求。如果池满,请求就会告知先等待,知道池中有进程借书,才会创建新的进程来执行这些请求。apply()-该函数用于传递不定参数,同python中的apply函数一致,主进程会被阻塞知道函数执行结束。3.x之后不再出现map()map(func, iterable[, chunksize=None])Pool类中的map方法,与内置的map函数用法基本一致,它
2020-10-07 21:40:07 580
原创 迁移学习
按照学习方法可以将迁移学习分为下面的几大类基于样本的迁移学习基于特征的迁移学习假设源域和目标域的特征不在一个空间。通过一些办法变换到一个特征空间,从而特征变得相似基于模型(参数)的迁移学习神经网络的结构可以直接迁移,例如finetune,就是模型参数迁移基于关系的迁移学习迁移学习的问题,有两个基本的概念:领域(Domain)和任务(Task)领域是进行学习的主题,包括数据和生成这些数据的概率分布。D表示domain,P表示概率分布迁移过程,涉及到源域(source d
2020-10-07 12:59:34 806
原创 分类问题的metrics
评价分类模型基本上都会用到下面几个基本的术语。我们假设这是一个二分类的问题。分类目标只有两类,被称为正例(positive) 和负例(negative)。在预测问题中,会存在下面几个术语描述相关的结果。1)True positives(TP): 被正确地划分为正例的个数,即实际为正例且被分类器划分为正例的实例数(样本数);2)False positives(FP): 被错误地划分为正例的个数,即实际为负例但被分类器划分为正例的实例数;3)False negatives(FN):被错误地划分为负例的个
2020-09-30 16:48:09 572
原创 yaml使用
yaml简介最近看代码,觉得大的工程都会使用单独使用配置文件,进行变量的声明和配置,而很多都是以yaml文件的形式保存。yaml是一种非常灵活的格式,几乎是json的超集。除了支持注释、换行符分隔、多行字符串、裸字符串和更灵活的类型系统之外,YAML 也支持引用文件,以避免重复代码。yaml语法规则基本规则:大小写敏感使用缩紧表示层级关系; 例如key:(空格)value,表示一个键值对,空格不可以省略。缩进时不允许使用Tab键,只允许使用空格缩紧的空格树木不重要,只要相同层级的元素左侧对齐
2020-09-03 18:00:59 266
原创 Docker核心组件 + docker daemon配置
Docker Daemon是docker架构中运行在后台的守护进程,可以分为docker Server, Engine和Job三部分。Docker DaemonDocker Daemon通过Docker server模块接受docekr clinet的请求,并在Engine中处理请求,然后根据请求类型,创建出指定的Job并运行。运行过程的作用有下面几种:从docker registry中获取镜像通过grahdriver执行容器镜像的本地化操作通过networkdriver执行容器网络环境配置
2020-09-02 10:52:29 926
原创 argparse模块
使用argparse的第一步是先创建一个ArgumentParser对象,ArgumentParser对象包含了将命令行解析成为Python数据类型所需要的全部信息。创建过程如下:parser = argparse.ArgumentParser(description=‘Process some integers.’)位置参数和可选参数位置参数在学习argparse模块的时候,搞清楚命令行位置参数和可选参数这两个概念十分有必要。基于位置的参数,参数的出现不需要前缀(以 - 或 – 开头的),而且
2020-08-25 15:29:09 330
原创 nvidia-smi &nvidia-docker
nvidia-sminvidia-smi是nvidia 的系统管理界面 ,其中smi是System management interface的缩写,它可以收集各种级别的信息,查看显存使用情况。此外, 可以启用和禁用 GPU 配置选项 (如 ECC 内存功能)。
2020-08-19 15:13:17 1054
原创 Python函数的特殊属性
Python 的函数特殊属性__doc__用于获取函数的文档说明,如果没有,则反悔None。__name__获取函数的名称例如:In [72]: def demo(a:3,b:'str') -> int: ...: return aIn [77]: demo.__name__Out[77]: 'demo'__qualname__获取函数的qualname,点示法显示函数名称、所在的类、模块等梯级地址。__module__返回函数所在的模块,如果无则返回None
2020-08-11 15:40:05 665
原创 mask R-CNN
语义分割(semantic segmentation),实例分割(instance segmentation)联系:语义分割和实例分割都是目标分割中的两个小的领域,都是对输入的图片做分割处理。区别:通常意义上的目标分割指的是语义分割,语义分割已经有很长的发展历史,已经取得了很好地进展,目前有很多的学者在做这方面的研究。实例分割是一个从目标分割领域独立出来的一个小领域,是最近几年才发展起来的。实例分割比语义分割更复杂,需要在语义分割的基础上对同类物体进行更精细的分割。Mask R-CNN的架构Mask
2020-08-06 16:20:45 847
原创 torchvision库简介
torchvision库torchvision是独立于pytorch的关于图像操作的一些方便工具库。torchvision的详细介绍在:https://pypi.org/project/torchvision/torchvision主要包括一下几个包:vision.datasets : 几个常用视觉数据集,可以下载和加载,这里主要的高级用法就是可以看源码如何自己写自己的Dataset的子类vision.models : 流行的模型,例如 AlexNet, VGG, ResNet 和 Densen
2020-08-04 16:14:06 2399
原创 pytorch计算图
Pytorch中的神经网络pytorch的计算图pytorch是动态图机制,所以在训练模型的时候,每迭代一次都会构建一个新的计算图。而计算图代表着程序中变量之间的关系。y=(a+b)(b+c)y=(a+b)(b+c)y=(a+b)(b+c)在这个运算过程就会建立一个如下的计算图。在这个计算图中,叶子节点(leaf_node)就是参与运算的变量。这个图里面只有a,b,c是leaf_node。之所以要关注leaf_node,因为计算网络在反向传播的时候,需要根据链式求导法则求出网络最后输出的梯度,然后再对网
2020-07-30 16:09:22 6141 1
原创 opencv处理图像
imread函数imread python原型retval = cv.imread( filename[, flags] )imread函数需要两个参数,一个是图片文件名(相对路径或者绝对路径都可以),另一个是flags读取标记,选取读图的方式,默认值为IMREAD_COLOR,flag的设定与用什么颜色格式读取有关。目前,支持下面的格式:Windows bitmaps - *.bmp, *.dib (always supported)JPEG files - *.jpeg, *.jpg,
2020-07-30 14:46:51 261
原创 pytorch分布式训练
torch.distributed 包支持Pytorch 中通过 torch.distributed 包提供分布式支持,包括 GPU 和 CPU 的分布式训练支持。Pytorch 分布式目前只支持 Linux。在此之前,torch.nn.DataParallel 已经提供数据并行的支持,但是其不支持多机分布式训练,且底层实现相较于 distributed 的接口,有些许不足。torch.distributed 的优势如下:每个进程对应一个独立的训练过程,且只对梯度等少量数据进行信息交换。在每次迭代
2020-07-29 16:40:11 843
原创 EAST模型分析
EAST流程EAST做文本检测只需要两步:先是一个全卷积的网络直接产生一个字符或者文本行的预测(可以是旋转的矩形或者不规则四边形),然后通过NMS(Non-Maximum Suppression)算法合并最后的结果。下图是EAST的pipeline。第一个阶段是基于全卷积网络(FCN)模型,直接产生文本框预测;第二个阶段是对生成的文本预测框(可以是旋转矩形或矩形)经过非极大值抑制以产生最终结果。该模型放弃了不必要的中间步骤,进行端到端的训练和优化。EAST 网络结构EAST网络是一个全卷积网络,主要
2020-07-28 17:17:03 3164
原创 谱聚类简介
相似图构造k-近邻图ϵ\epsilonϵ近邻图未标准化拉普拉斯矩阵标准化拉普拉斯矩阵拉普拉斯矩阵的性质Laplacian矩阵L,有下面几个性质:(a)(b) L是对称的和半正定的。w和D矩阵都是对称矩阵,所以L是对称矩阵。©谱聚类算法计算L的前k个特征向量u1,...,uku_1,...,u_ku1,...,uk(1)List item令U∈Rn×kU \in R^{n\times k}U∈Rn×k为以前k个特征向量u1,...,uku_1,...,u_ku1,..
2020-05-21 23:48:23 1169
原创 多进程multiprocessing模块
介绍multiprocessing 是一个用于产生进程的包,具有与 threading 模块相似API。 multiprocessing 包同时提供本地和远程并发,使用子进程代替线程,有效避免 Global Interpreter Lock 带来的影响。因此, multiprocessing 模块允许程序员充分利用机器上的多核。可运行于 Unix 和 Windows 。Unix/Linux实现多进程Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次,返
2020-05-10 01:58:08 711
原创 mpi介绍
mpimpi (message passing interface) 消息传递接口。mpi是一个为并行计算设计的通信协议。支持点对点和广播。MPI是一个信息传递应用程序接口,包括协议和和语义说明,他们指明其如何在各种实现中发挥其特性。MPI的目标是高性能,大规模性,和可移植性。MPI在今天仍为高性能计算的主要模型。与OpenMP并行程序不同,MPI是一种基于信息传递的并行编程技术。消息传递接口是...
2020-05-02 00:21:41 3613
原创 make使用
make 工具make及其描述文件makefile. Makefile文件Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。在 UNIX 系统中,习惯使用 Makefile 作为 makfile 文件。...
2020-05-01 10:23:06 596
原创 ssh连接
sshSSH是一种网络协议,用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。最早的时候,互联网通信都是明文通信,一旦被截获,内容就暴露无疑。1995年,芬兰学者Tatu Ylonen设计了SSH协议,将登录信息全部加密,成为互联网安全的一个基本解决方案,迅速在全世界获得推广,目前已经成为...
2020-04-29 17:19:20 430
原创 优化算法总结
<一年前看的,有的懂了有的没懂,但是没有做记录,现在什么也不记得了。今天同学问我是否有了解,原来我只记得这些算法的名字了。时刻提醒我好记性不如烂笔头,我要好好记录总结。>梯度下降算法模型参数θ\thetaθ目标函数J(θ)J(\theta)J(θ)学习率α\alphaα梯度gt=∇θJt(θ)g_t =\nabla_{\theta} J_t (\theta)gt=∇θJt...
2020-04-26 21:49:14 682
原创 slurm作业调度系统
编写Slurm脚本#!/bin/bash#SBATCH -J test # 作业名是 test#SBATCH -p cpu # 提交到 cpu 分区#SBATCH -N 1 # 使用一个节点#SBATCH --cpus-per-task=1 # 每个进程占用一个 cpu 核心#SBATCH -t...
2020-04-20 21:51:59 7119
原创 LSTM 和RNN
LSTM(Long Short-Term Memory )长短期记忆网络。一开始用于解决RNN结构中梯度消失问题而提出来的。LSTM设计了输入门(i),遗忘门(f),输出门(o)消除或者增加细胞状态的能力,最终使得LSTM具有记忆长期信息的能力。需要理解这三个门的工作才能够真正理解lstm在做什么。i,f,o都是sigmoid函数运算,取值范围在0,1之间。f门对上一层(上一时刻)的输出和本层的...
2020-01-08 01:04:31 428
原创 virtualenv
现在python版本众多,而各个版本跟其他的库之间又存在诸多依赖关系。当我们想完成某个任务搭建一个python环境,切忌直接在系统python环境上进行,否则会造成很严重的事故。所以此时使用虚拟的隔离出的python运行环境就会显得很有必要。即:virtualenv。安装pip3 install virtualenv创建创建一个新的目录,然后使用virtualenv创建一个独立的pyth...
2020-01-07 20:54:53 229
原创 迭代器,生成器和yield使用
迭代器和生成器python允许用户自定义迭代器。需要定义下面两个方法:_iter_()返回迭代器对象本身_next_()从容器中返回下一项,如果没有项可以返回,会引发StopIteration异常。例如:class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self...
2019-12-30 15:06:16 261
原创 grep命令,sed命令和awk命令
sed和awk是linux中两个功能非常强大的命令。过去经常使用到,但对他们的了解都是断断续续,现在总结一下,方便更加全面的了解和学习。sed (stream editor)sed是一个非交互式文本编辑器。它从文本或者标准输入中读取数据,然后将其复制到缓冲区,读取命令进行编辑,重复此过程,知道所有命令执行完毕。sed使用方式sed <sed 命令> input-file &g...
2019-10-28 19:36:30 385
原创 linux循环
declare声明变量。声明变量为数值型:declare -i num=12也可以查看变量类型:declare -p num声明数组变量定义数组arr[0]=xdeclare -a arr[1]=y声明环境变量declare -x t=123声明变量只读属性declare -r a=123此时重新赋值会报错,不能够修改。until 使用until循环使用格式unt...
2019-10-28 16:34:18 156
原创 查看linux处理器和内存信息。
这次查看的cpuinfo和meminfo文件都在/proc文件夹下。/proc文件系统是一种内核和内核模块用来向进程发送信息的机制。这个伪文件系统可以和内核内部的数据结构进行交互,获取实时的进程信息。查看处理器信息Xeon处理器,intel开发的供服务器以及工作站使用的处理器。Xeon E3 针对工作站和入门级服务器的单路处理器。有E3-1100和E3-1200系列。Xeon E5是中高端工...
2019-05-25 14:30:21 6719
原创 GAN介绍
GAN(Generative Adversarial Network)GAN中存在两个网络,分别是生成器G(Generator)和判别器D(Discriminator)。找到一个Generator,使得判别器D不能分开真实的和生成的数据。生成器网络在训练过程中,生成网络尽量生成真实的图片去欺骗判别器D。判别器D尽量把生成器G生成的图片和真实的图片区分开。G和D构成一个动态的博弈过程。找到一...
2019-05-20 17:25:48 4015
原创 python中 *args和**kwargs
参数个数可变为什么我们会使用*args和**kwargs表示输入的参数呢?因为当参数个数不确定的时候,不能够使用基于位置的参数表示方式,我们会使用(*args, **kwargs)来自动适应变参数和命名参数。这意味着,我们想往函数中输入多少个参数都行,分别以元组形式,字典形式传递参数。def test(*args,**kwargs): print(type(args),args) ...
2019-05-20 15:39:59 287
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人