很有必要认真地总结一下这三个小朋友的关系,但我可是被他们仨虐了好久,首先感谢MWB,jacker的《Cmake实践》
如何安装
现在用的是G++-4.9:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install g++-4.9
cd /usr/bin/
sudo ln -s g++-4.9 g++ -f
sudo ln -s gcc-4.9 gcc -f
make应该有自带的,cmake就上官网下载包
sudo make
sudo make install
GCC/G++
经过4步:预处理(预处理器cpp),编译(编译器egcs),汇编(汇编器as)和链接(连接器ld)
//预处理
gcc -E test.c -o test.i //i文件
//编译
gcc -S test.i -o test.s //s文件
//汇编
gcc -c test.s -o test.o //o文件
//链接
gcc test.o -o test //bin文件
优化等级: -O -O2 -O3
包含头: -include -I
链接库: -l -L
警告信息: -Wall 、 -w 和 -v
定义环境变量:D
(注意,通常手写链接参数很麻烦,很多库提供链接参数的程序,名字叫xxx-config,放在/usr/bin下
于是有了 gcc gtktest.c ‘pkg-confg gtk+ –libs –cflags’
–libs定义了链接需要的参数,–cflags是生成头文件包含的目录)
交叉编译:指本地编译其他平台执行的程序,需要另外用-L和-I来连接库和头文件
MAKE
基本语法
target : prerequisites
command
自动推导以及文件依赖关系后面的命令:看到[.o]文件会自动把[.c]文件加入依赖项。
GNU的MAKE工作方式:
1.读入所有Makefile
2.读入被Include的其他makefile
3.初始化文件中变量
4.推导隐晦规则,分析所有规则
5.为所有目标文件创建依赖关系链
6.根据依赖,决定哪些目标的生成
7.执行生成命令
CMAKE
(记下一些关键词)
CMAKE架构项目学习
基本用法
PROJECT
自动隐定义 PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR
SET(NAME VAR)
MESSAGE([STATUS | DEBUG] “string” var)
ADD_SUBDIRECTORY(folderName)
ADD_EXECUTABLE(targets src_lists)
make install
CMAKE有用的变量 CMAKE_INSTALL_PREFIX
INSTALL(FILES file_list DESTINATION folderName)
INSTALL(PROGRAMS .sh DESTINATION bin)
INSTALL(DIRECTORY doc/ DESTINATION doc)
生成动态和静态库
ADD_LIBRARY(libName [SHARED|STATIC] src_lists)
注意:要动态和静态库同名,先用别名生成静态库,再改别名
如:ADD_LIBRARY(hello_static STATIC ${LIBHELLO_SRC})
SET_TARGET_PROPERTIES(hello_static PROPERTYES OUTPUT_NAME “hello”)
链接头文件和动态库
INCLUDE_DIRECTORIES(folderName)
LINK_DIRECTORIES(folderName)
ADD_EXECUTABLE(main ${SRC_LIST})
TARGET_LINK_LIBRARIES(main libNames)
使用CMAKE_INCLUDE_PATH的环境变量,用FIND_PATH可以轻松找到对应的头文件
孟老师的工作介绍
西安交通大学的孟老师数学优化和建模很厉害,给了一下内容的讲座
Noise Modeling Principle
一般ML问题$min_wL(x,\phi(w))+R(w)$
然后很多工作围绕正则项R(w)展开优化,L主要是$L_0 , L_1 ,L_P$
利用贝叶斯模型来解释,可以将噪声模型与损失函数对应起来,然后就是w和loss func迭代求解收敛,提到了使用混合高斯模型建模,有利于分离Low-rank structure数据的噪声
Adaptive Noise Learning
假设数据都是Low-Rank Structure,然后进行噪声提取分离,目前用在的应用有 1.人脸去噪 2.背景提取 3.HSI去噪 接下来做一些雨雪分离,以及CT医学图像的去噪应用。
Self-Pace Learning
提到了ML,Cognitive Science和Self-pace Learning的概念,主要原理是让模型学习从易到难,从而筛选掉一些难的数据不进行学习,其中很多的参数和变量应该用非监督的方法自动学习,主要围绕机器学习的方法展开,最后论证一下Self Pace Learning的一些有效性证明。