Day 1: 1、linux基础指令: Pwd: 查看当前所在路径; cat /proc/cpuinfo:查看cpu Ls: 当前所在路径下有哪些内容; ls -l: 以长格式显示(long); Ls -a: 显示所有(包含隐藏)all; La -al / ls - la:以长格式显示所有文件; 2、路径: 绝对路径:以/开始的路径/home/tarena 相对路径:不以/开始的路径 … : 上一级目录 ~: 主目录 /home/gary 3、cd : 切换目录 Cd 路径 4、Tips: 找路径可先打首字母 5、Mkdir: 创建文件夹 6、Cd …回退到上一级 7、Cd: 回到主目录 8、Ctrl+c:终止当前命令执行 9、Ctrl+l:清屏快捷键; 10、严格区分中英文空格,创建文件夹的过程中如果用中文空格,就会出错 11、Touch:创建文件;连续创建多个文件:touch filename1.txt filename2.doc fillename3.csv 12、Rm: 13、df -h查看linux系统各分区的使用情况 14、linux中常用的快捷键: (1)Tab: 自动补齐; (2)Ctrl+c:终止当前命令的执行; (3)Ctrl+l:清屏; (4)上下箭头:翻出之前执行过的命令; (5)Ctrl + shift + ‘+’:终端字体放大 (6)Ctrl + ‘-’ :终端字体缩小 (7)Ctrl + shift +t :添加一个终端 (8)Exit:退出终端
Day2: 1、linux命令 (1)关机、重启: ①关机:init 0 ②重启:init 6 2、删除: (1)rm -rf filename/dir;还可以通过路径+文件名删除: (2)r: 递归删除文件夹内的子文件夹;f:强制删除; (3)rm -rf *:删除当前文件夹下面的所有文件; (4)rm -rf / home/tarena/11.txt:错误,将删除整个硬盘,尽量不用绝对路径; 3、Cd - 在最近切换的两个路径之间切换; 4、cp: 复制文件/目录 (1)复制文件:cp 文件名 路径 (2)复制目录:cp -r 目录名 路径 5、mv: 剪切文件/目录 (1)mv 文件/目录 路径 (2)重命名:mv 文件名/目录 文件名 6、vim 文件名:如存在,编辑文件;如不存在,则创建并编辑; (1)浏览模式:启动之后进入的模式; (2)插入模式:编辑文本; (3)命令行模式:输出操作 (4)文本写入步骤: ①Vim 文件名; ②按a:浏览模式->插入模式; ③写入内容 ④按esc,从插入模式->浏览模式; ⑤按shift + : :进入命令行模式 ⑥Wq : 保存并退出(write quit) ⑦q! : 强制退出,不保存,直接退出 7、cat查看文件 8、scp : (1)远程复制:把本地的文件复制到远程主机上; (2)命令格式:scp filename 用户名@IP地址:绝对路径 (3)Scp pycharm.tar.gz tarena@172.40.78.200:/home/tarena/ 9、ifconfig查询IP地址 10、打开防火墙;sudo ufw enable; sudo ufw allow 22: 远程连接端口号:22 11、远程连接:/etc/init.d/ssh 12、打压缩包 (1)打包命令关键字:tar -zcvf 压缩包名字.tar.gz 文件1 文件2 目录3 (2)选项: ①z : 使用gzip方式压缩 ②c: 创建包create ③v:显示操作文件的细节 ④f: 要操作的文件名 file 13、解压缩包 (1)命令关键字:tar -zxvf 压缩包名字.tar.gz [-C 路径]
1、python概述: (1)python版本:主流版本 ①Python2版本 1)python2.3 2)Python2.7 ②Python3版本 (2)优缺点: ①优点:易学易用、开发效率高 ②缺点:运行效率低
2、pycharm编辑器 (2)自动补齐:tab (3)注释/取消注释:ctrl + / (4)同时选中多个光标,按住左键+alt+拉动 (5)保存:ctrl+s (6)回退:ctrl + z (7)取消回退:ctrl + shift + z 3、标准输出函数:print() (1)作用:把内容输出到终点; 4、字符串 (1)用引号包裹(单引号、双引号、三引号) (2)Tom’s pet is a cat.已经有单引号,所以要用双引号 (3)三引号:所见即所得(可以输出换行) 5、变量:内存中对象的绑定 (1)格式:变量名 = 值 ①Name = ‘金毛狮王’ ②Age=66 6、字符串格式化(占位符) (1)语法格式 ①print(‘%s的颜值是%d分’ % (name, score)) ②占位符: 1)%s 字符串string占位符, 2)%d 整数digit占位符, 3)%f 浮点数float占位符,注:如遇到小数位,则可用.2f%表示保留小数点后两位。 7、算数运算符 (1)+ - * / (2)%: 取余数 11%2 == 1 (3):幂运算 53 --> 5的三次方 (4)//: 地板除 11//2 == 5(只要整数,%只要余数)
Day3 1、变量命名规则: (1)数字、字母、下划线,不能以数字开头 (2)不能使用python关键字(if、for、while) (3)区分字母大小写 2、标准输入函数input() (1)作用:接受从终端输入的字符/字符串,赋值给变量 (2)Int():把字符串类型的数字转化为整型 ①Age =input(‘年龄’);Age = int(age) ②Age = int(input(‘年龄’)) 3、if分支结构 (1)作用:让程序根据条件,选择性地执行某条件或者某些语句; (2)语法结构: if 条件1: 1)python语句 elif 条件2: python语句 … … … … else: python语句 (3)注意: if、elif、else后一定要加: elif可有可无 else可有可无,但最多只有一个 4、关系运算符:针对if里面的条件 5、逻辑运算符 (1)And:两个或者多个条件同时成立 ①if条件1 and条件2 and 条件3: 1)Python语句块 (2)Or:两个或者多个条件满足任何一个即可 ①If条件1 or 条件2 or 条件3: 1)Python语句 6、字符串:有序的字符序列 (1)算数运算符 ①+ += * *= 1)“你好”+“赵丽颖”=“你好赵丽颖” (2)比较运算符 ①== != 、not in 1)If ‘h’ in ‘hello’: (3)常用函数 ①len(): 求字符串的长度 ②Isdigit():判断字符串是否为全数字 ③Strip():去掉字符串两边的空格 ④Lower():将字符串转换为小写。 **************************************************************8 Day04 7、数值类型:整形、浮点型; 8、字符串: 9、列表:一种容器,里面可以存放任何类型的数据 (1)用[]表示: ①列表中的元素是有序的 ②L = [] ③L1 = [666,’赵丽颖’,] # L1中有2个元素 ④L2 = [‘石头’,’剪刀’,’布’] #L2中有3个元素 (2)通过索引取值,索引从0开始, ①语法格式:列表[下标], L2[x] ②索引取值 1)正向索引(从0开始) a.L = [‘小昭’,100,’赵敏’,200,张无忌,[‘石头’]] b.L[5] = [‘石头’] 2)反向索引(从-1开始) a.L[-1] = [‘石头’] 3)内建方法: a.Len(L): len([‘剪刀’,‘石头’]) b.Max c.Min 4)列表常用方法 a.L.append(元素):在列表中追加一个元素,长度可变 a)L = [1,2,’赵丽颖’] i.L.append(‘冯绍峰’):L的值:[1,2,’赵丽颖’,‘冯绍峰’] b.L.sort():对列表中的元素进行排序 a)L = [1,2,4,3,6,4,9,8] b)L.sort() c)L = [1,2,3,4,4,6,8,9] c.对列表进行切片 a)L[0:3]:取第一个到第三个元素 5)通过random从列表里面取值 a.import random b.print( random.randint(1,10) ) # 产生 1 到 10 的一个整数型随机数 c.print( random.random() ) # 产生 0 到 1 之间的随机浮点数 d.print( random.uniform(1.1,5.4) ) # 产生 1.1 到 5.4 之间的随机浮点数,区间可以不是整数 e.print( random.choice(‘tomorrow’) ) # 从序列中随机选取一个元素 f.print( random.randrange(1,100,2) ) # 生成从1到100的间隔为2的随机整数 g.a=[1,3,5,6,7] # 将序列a中的元素顺序打乱 h.random.shuffle(a) i.print(a) 10、’\033[30mchuangqian mingyueguang\033[0m’:可设置字体颜色 11、注册,使用到的模块: (1)String: dir(string):查看功能 ①string.ascii_letters::‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ’ ②string.printable’0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#KaTeX parse error: Undefined control sequence: \t at position 70: ….whitespace: ' \̲t̲\n\r\x0b\x0c' ④…%&’()+,-./:;<=>?@[\]^_`{|}~’ (2)Getpass: ①Import getpass ②Password = getpass.getpass(‘请输入密码:’) 思路: 定义变量,存放所有的特殊字符; 接收用户输入用户名 对用户名中每个字符进行判断 如用户名没有问题,输入密码,并再输入一次,进行比较,是否一致 12、time.sleep(1):让程序休眠一秒钟 13、while循环 (1)作用:根据一定条件,重复执行某一条或者多条语句 (2)语法: ①While 条件: 1)Python语句 ②执行顺序 1)先判断条件是否成立 2)如果成立,执行python语句,继续做条件判断,直到条件不成立,循环结束。 Day05: 1、while之最常用 死循环 (1)While True: ①代码块 ②If 满足终止的条件: 1)Break 2、break语句 (1)作用:用于循环语句中,用来终止循环 (2)注意: ①break语句一旦执行,整个循环结束 ②break语句一般和if语句组合使用 (3)练习: ①猜数字,计算机1-100,你来猜 (4)While true: ①Print(123) ②If choice == ‘q’ 1)Break ③Print(456) ④Print(789) (5)Print(‘abc’) (6)break语句 3、for循环:遍历序列中的每一个元素 (1)语法: ①For 变量名 in 序列: 1)代码块 4、造数函数rang() (1)Range(3) --> [0,1,2] ①For i in range(3): ②石头剪刀布程序 (2)Range(1,4) --> [1,2,3] ①Range(3,5) --> [3,4] (3)Range(1,10,2):起始值,终止值,步长:[1,3,5,7,9] ①Range(2,10,2):[2,4,6,8] 5、循环适用场景 (1)for循环:已知循环次数的程序 (2)while循环:不知道循环次数的程序 6、练习 (1)随机生成20以内的加减法的程序 7、判断字符类型是整形还是字符串类型: str_1 = “123” str_2 = “Abc” str_3 = “123Abc” #用isdigit函数判断是否数字print(str_1.isdigit()) Tureprint(str_2.isdigit()) Falseprint(str_3.isdigit()) False #用isalpha判断是否字母print(str_1.isalpha()) Falseprint(str_2.isalpha()) Ture print(str_3.isalpha()) False 8、斗地主游戏发牌: (1)生成54张牌,放到列表中 (2)洗牌(列表中元素乱序) (3)取牌(每个人取17张,剩3张底牌) ①知识点 1)洗牌方法(乱序) 2)红桃: \033[31m\u2665\033[0m 3)黑桃: \u2660 4)方块:\u2666 5)梅花:\u2663 9、Tensorboard打开指令: tensorboard --logdir /tmp/my_train (.ckpt文件存放的路径) 10、衡量显卡性能的参数可包括: (1)核心数目; (2)显存带宽(GPU计算能力太强,很多时候瓶颈都在数据传输上); (3)峰值单精度浮点计算能力; (4)峰值双精度浮点计算能力; (5)时钟频率; (6)架构版本。 11、在Unix系统上,从源文件到目标文件的转化是由编译器驱动程序完成的: (1)Linux> gcc -o hello hello.c 12、控制器:I/O设备本身或者系统的主印制电路板;适配器:插在主板卡槽上的卡; 13、./hello:执行程序;
**操作系统部分 1、将输出字符串从寄存器写到显示器:
2、存储器层次结构示例:从上之下,设备访问速度越来越慢,容量越来越大,每字节的造价越来越便宜。
3、操作系统通过进程、虚拟内存和文件来实现1)防止硬件被失控的应用程序滥用2)向应用程序提供简单一直的机制来控制复杂而又通常大不相同的低级硬件设备。
4、Unix内核是由C语言编写的; 5、Malloc:虚拟内存(堆)分配库函数; 6、Free:C库函数 void free(void *ptr) 由calloc,malloc或realloc调用先前分配的回收虚拟内存(堆)。 7、文件就是字节序列,每个I/O设备,包括磁盘、键盘、显示器,甚至网络,都可以看成是文件。 8、Amdahl定律:要想显著加速整个系统,必须提升全系统中相当大的部分的速度。 9、多核处理器的组织结构:
10、超标量处理器:处理器可以达到比一个周期一条指令更快的执行速率; 11、抽象的概念:
文件是对I/O设备的抽象,虚拟内存是对程序存储器的抽象,进程是对一个正在运行的程序的抽象。虚拟机是对整个计算机的抽象,包括操作系统,处理器和程序。 12、补码: 13、补码加法:先将补码转换为无符号数,进行无符号数加法,再将结果转换为补码。 14、补码加法溢出判断: 16、图像预处理与特征提取: (1)逐像素变换: ①白化 ②直方图均衡化 ③线型滤波 1)高斯(模糊)滤波器 2)一阶微分滤波器与边缘滤波器 3)拉普拉斯滤波器 4)高斯-拉普拉斯(LOG)滤波器 5)高斯差分(DOG) 6)Gabor滤波器 7)Hear-like滤波器 ④局部二值模式(LBP) ⑤纹理基元映射 (2)边缘、角点和兴趣点 ①Canny边缘检测器 ②Harris角点检测器 ③SIFT(尺度不变特征)检测器 (3)描述子 ①直方图 ②SIFT描述子 ③方向梯度直方图 ④词袋描述子 ⑤形状内容描述子 (4)降维 ①单数值近似 ②主成分分析 ③二元主成分分析 ④K均值算法 17、基于将结构光投影到对象的3D模型构建方法 (1)结构光的深度(结构光方法:一次一个像素使用投影机照亮场景) (2)剪影重构 18、基于从对象轮廓构建近似模型生成对象新视图的方法 19、二维变换模型: (1)欧式变换模型(3个潜在自由度)
(2)相似变换模型(4个潜在自由度)
(3)仿射变换模型(6个潜在自由度) ① (4)投影变换模型(8个自由度) ① (5)平面的三个几何问题: ①学习外在参数(计算平面与摄像机之间的几何关系) ②学习内在参数(从一个平面开始校准) ③在给定图像位置的前提下,推断出与摄像机有关的平面上点的3D坐标 20、RANSAC的鲁棒算法的两个应用: (1)增强现实追踪; (2)视觉全景(图像拼接)。 21、稠密立体重建:建立一个场景的精确模型,需要估计图像中每个点的深度。 22、形状模型: (1)三维形变模型:纹理映射
(2)三维人体模型:定义人体表面的三角网表示
23、人脸识别的任务: 24、身份子空间模型的局限性: Q1:什么叫做“增加第二个子空间”和协方差(对角线)模型? Q2:混合/通过非线性是什么意思? 25、PLDA模型
子空间Φ可用于区分与身份没有关联的个体,子空间Ψ可用于搜素与身份有内部关联的个体。 26、Q:核函数的选择在哪个地方进行?(Caffe框架入门课程) 27、数据增强:Opencv和Keras 28、transpose操作没搞懂 29、Caffe网络架构画图依赖包:graphviz及pydot 30、算法部分从5.1.4典型案例开始(5.1.4.1 视频分割); 31、7.3.2.1 Tensorflow 示例、7.3.2.3 Tensorflow 单机训练示例、7.3.2.4 Tensorflow 分布式训练示例; 32、strides=[1, 1, 1, 1]:batchsize, h, w, featuremap 33、Python Numpy中reshape函数参数-1的含义:一个参数为-1时,那么reshape函数会根据另一个参数的维度计算出数组的另外一个shape属性值。 34、tf.equal():逐个元素进行判断,如果相等就是True,不相等,就是False; 35、tf.cast(): 执行 tensorflow 中张量数据类型转换. 36、关于Adam优化算法: 37、tf.nn.softmax_cross_entropy_with_logits的用法: 第一步是先对网络最后一层的输出做一个softmax,这一步通常是求取输出属于某一类的概率,对于单样本而言,输出就是一个num_classes大小的向量([Y1,Y2,Y3…]其中Y1,Y2,Y3…分别代表了是属于该类的概率) softmax的公式是: 第二步是softmax的输出向量[Y1,Y2,Y3…]和样本的实际标签做一个交叉熵,公式如下: 其中指代实际的标签中第i个的值(用mnist数据举例,如果是3,那么标签是[0,0,0,1,0,0,0,0,0,0],除了第4个值为1,其他全为0) 就是softmax的输出向量[Y1,Y2,Y3…]中,第i个元素的值 显而易见,预测越准确,结果的值越小(别忘了前面还有负号),最后求一个平均,得到我们想要的loss 注意!!!这个函数的返回值并不是一个数,而是一个向量,如果要求交叉熵,我们要再做一步tf.reduce_sum操作,就是对向量里面所有元素求和,最后才得到,如果求loss,则要做一步tf.reduce_mean操作,对向量求均值! 代码: · import tensorflow as tf · #our NN’s output · logits=tf.constant([[1.0,2.0,3.0],[1.0,2.0,3.0],[1.0,2.0,3.0]]) · #step1:do softmax · y=tf.nn.softmax(logits) · #true label · y_=tf.constant([[0.0,0.0,1.0],[0.0,0.0,1.0],[0.0,0.0,1.0]]) · #step2:do cross_entropy · cross_entropy = -tf.reduce_sum(y_tf.log(y)) · #do cross_entropy just one step · cross_entropy2=tf.reduce_sum(tf.nn.softmax_cross_entropy_with_logits(logits, y_))#dont forget tf.reduce_sum()!! · · with tf.Session() as sess: · softmax=sess.run(y) · c_e = sess.run(cross_entropy) · c_e2 = sess.run(cross_entropy2) · print(“step1:softmax result=”) · print(softmax) · print(“step2:cross_entropy result=”) · print(c_e) · print(“Function(softmax_cross_entropy_with_logits) result=”) · print(c_e2) 38、tf.reduce_mean():函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。 ‘x’ is [[1., 2.] [3., 4.]] tf.reduce_mean(x) ==> 2.5 #如果不指定第二个参数,那么就在所有的元素中取平均值 tf.reduce_mean(x, 0) ==> [2., 3.] #指定第二个参数为0,则第一维的元素取平均值,即每一列求平均值 tf.reduce_mean(x, 1) ==> [1.5, 3.5] # 39、tf.argmax():根据axis取值的不同返回每行或者每列最大值的索引 40、tf.one_hot():tf.onehot(indices,depth,on_value=None,off_value=None,axis=None,dtype=None,name=None)如果传入的indices是一个长度为features的向量,那么输出的大小是:如果axis=-1,那么大小是features×depth,如果axis=0,那么大小是depthfeatures. 41、feed_dict:是用来赋值的,格式为字典型。 42、format用法大全:https://www.cnblogs.com/lovejh/p/9201219.html 43、SSD算法中,要求的输入图片大小为300*300但实际数据集中并非如此大小(通过查看图片属性详细信息获得),如何统一? 44、cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2搜索信息 45、boot空间不足,查看内存镜像使用情况:dpkg --get-selections | grep linux-image 46、查看进程id,ps -ef | grep fire or ps aux | grep firefox 47、暴力杀死进程:kill -9 id 48、输入 gg 命令,光标会移动到文档开头 ;输入 G 命令,光标会移动到文档末尾;:n跳转到第n行; 49、如果是用vi打开文件后,在命令行下输入“/关键字”,找到相关文字以后: (1)按下小写n,向下查找 (2)按下大写N,向上查找 如果是在没有打开文件的前提就用"cat 文件名 | grep “关键字”" 50、删除文件操作: dd:删除游标所在的一整行(常用) ndd:n为数字。删除光标所在的向下n行,例如20dd则是删除光标所在的向下20行; 记住不是从开始行删除哦; d1G:删除光标所在到第一行的所有数据 dG:删除光标所在到最后一行的所有数据 dKaTeX parse error: Expected 'EOF', got '#' at position 192: …hutdown -r now #̲立刻重启 shutdown -… ls -l | grep “^-” | wc -l 统计当前目录下文件的个数(包括子目录) $ ls -lR| grep “^-” | wc -l 查看某目录下文件夹(目录)的个数(包括子目录) $ ls -lR | grep “^d” | wc -l 58、退出时如果想继续运行:按顺序按【ctrl+p】,【ctrl+q】 (1)如果不想继续运行:按【ctrl+d】或输入exit (2)另:关闭后重启请输入:docker restart 【CONTAINER ID或NAMES】 59、重新进入容器: sudo docker attach ID; 60、docker ps -a -q:查看所有的容器 61、远程拷贝文件:scp admin@192.xxx.xx.xxx:/data/user/video_Detection.tar.gz/ /home/user/ 62、备份容器: (1)–使用 docker commit 命令来创建快照: ①docker commit -p container_id container-backup (2)如果我们不想备份到docker注册中心,而是想要将此镜像保存在本地机器中,以供日后使用,那么我们可以将其作为tar包备份。要完成该操作,我们需要运行以下 docker save 命令。 ①docker save -o ~/container-backup.tar container-backup (3)要验证tar包是否已经生成,我们只需要在保存tar包的目录中运行 ls 命令即可。 (4)下拉以保存的本地镜像:docker image load -i nginx.tar。 62、查看linux下安装的opencv版本信息: pkg-config opencv --modversion 63、linux中统计文件夹中文件数量:ls -l |grep “^-”|wc -l; 64、linux中查询cudnn版本:cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2