dailyworklog's People
dailyworklog's Issues
Paper reading
阅读论文笔记
Pytorch学习笔记
torch.nn.Parameter
Parameter类是Tensor
的子类,是一个模型内可以进行梯度更新的参数,可通过model.parameters()
进行迭代,
for param in model.parameters():
print(type(param.data), param.size(), param.names)
在优化器中会指定这些参数
optimizer = optim.SGD(model.parameters(), lr=0.0001, momentum=0.9)
因此,如果只是定义了tensor
,没有加到模型的parameter
里面,这些tensor
是无法被训练的,即使requires_grad
设置为了True
,因此需要用Parameter
对tensor
进行包装。以下的代码写在模块的__init__
函数下,会自动认为加入到当前模块中
class ResnetAttention(nn.Module):
def __init__(self, model, num_classes):
super(ResnetAttention, self).__init__()
...
self.w1 = nn.Parameter(torch.tensor([1.]), requires_grad=True)
self.w2 = nn.Parameter(torch.tensor([1.]), requires_grad=True)
self.w3 = nn.Parameter(torch.tensor([1.]), requires_grad=True)
...
#注意!这里后面不能加上.cuda(),否则会从parameter退回tensor,模块会默认把所有参数放到gpu上
下面的代码是在模块中加入parameter
的另一种方法,name
参数传入字符串,可以通过这个名字来访问该parameter
,param
参数则是需要加入模块的parmameter
,注意,必须是parameter
,tensor
不行,这里可能是用来加入到其他模块中?
self.register_parameter(param=self.w1, name='aaa')
self.register_parameter(name='bbb', param=self.w2)
self.register_parameter(name='ccc', param=self.w3)
2019年5月-8月
2019.5.3工作日志
Batch Normalization introduction
吴恩达机器学习课程笔记
P10
- 关于学习率的直觉:
P11线性回归的梯度下降
P14矩阵和向量
- 向量:n*1 n行,1列
P15
P17矩阵的逆和转置
- 不可逆矩阵成为奇异矩阵(singular matrix)或退化矩阵(degenerate matrix)
P22 特征和多项回归
P23 Normal Equation正规方程
- 在线性回归中,可以使用正规方程直接算出使损失函数最小的参数值,而梯度下降法则需要自己设定学习率并且经过若干迭代才能最小化损失函数
- 当特征数目少于10000时正规方程是不错的选择,但当特征数目大于这个数目时,计算会变得非常慢。
- 在其他的算法问题中,正规方程也是不适用的
- 一组数据用一个列向量表示……列向量转置……
P24 正规方程中矩阵不可逆
Logistic Regression
P32 分类问题
- logistic regression 虽然是叫regression但是个分类算法。(分类问题&回归问题)
P33 假设陈述
P34 决策边界 Decision Boundary
P35 Cost Function (其实就是交叉熵)
- 如果做logistic regression仍使用线性回归的cost function,则cost function是一个非凸函数(如下图左),有很多局部最优解,这一现象是由sigmoid函数的非线性导致的,因此需要修改cost function
- cost function的选取如下,是一个分段函数。y=1时(即真实标签为1),如果判断出的结果
为0,则会导致损失函数非常大(正无穷);同样的,y=0时如果判断结果为1也会使loss值很大,从而达到损失函数的目的
P38 多元分类:一对多
正则化 Regularization 在另一个issue也提到了这个问题
P39 Overfitting
P40 Cost Function
- 直观上说,增加更多的高阶项(即增加了更多的参数theta)可以让决策边界更加弯曲(这里的高阶项是现有feature若干次幂的组合,比如数据有两个特征x1和x2,高阶项可能是x1^2, x2^2, x1x2, x1x2^2...,因此数据可以用P39中两个坐标轴组成的坐标系表示),因此解决这一问题的**就是减小相应的theta值。一般采用的方法就是在loss function添加正则项,这个正则项其实就是所有参数的平方和,这样一来就可以在减小loss function的同时减小theta了
Advice for applying machine learning
diagnosing bias & variance
- 出现bias问题对应着underfitting,variance问题对应着overfitting
- 这里的高bias问题对应着拟合多项式的次数过低,即欠拟合;高variance对应着拟合多项式的次数过高,即过拟合。对应到训练结果上就是验证集的损失高+训练集的损失高就是欠拟合,验证集的损失高+训练集的损失低对应过拟合。
regularization and bias & variance
learning curve
当处于high bias时,增加数据样本对于提升模型性能是没有用的,如上图右侧所示
high variance的特点是验证集的loss和测试集的loss相差较大,此时增加训练样本对是有用的
deciding what to do next
Machine learning system design
Error analysis
SVM
问题链接合集
问题链接合集
-
谈谈 Python 程序的运行原理 Mac OS X 下使用 Ruby Gem 的两个坑 这篇文章的意义不仅在于他解决的问题 中间有一段关于系统自带和自己安装的软件的差别 十分有助于对于系统的理解!
-
SCP
scp -r Desktop/filtered/ [email protected]:/home/qiushuhao
scp -r [email protected]:/home/qiushuhao Desktop/filtered/
-
conda install —file FILEPATH 按照文件安装相应pacakage
-
Epoch vs Batch Size vs Iterations 1
Epoch vs Batch Size vs Iterations 2 -
Step by Step, A Tutorial on How to Feed Your Own Image Data to Tensorflow
-
TensorFlow指定特定GPU以及占用显存的比例
os.environ["CUDA_VISIBLE_DEVICES"]=‘6‘’,‘7’
-
Tensorflow加载预训练模型和保存模型1
Tensorflow加载预训练模型和保存模型2
Tensorflow加载预训练模型和保存模型3 -
Tensorflow的可视化工具Tensorboard的初步使用
$ tensorboard —logdir=‘/Users/qiushuhao/Desktop’
-
linux&windows utf8和gbk编码识别&互相转换1
linux&windows utf8和gbk编码识别&互相转换2 -
Linux查看进程
ps -ef|grep PID
-
本地预览博客
$ jekyll serve --watch
-
linux上anaconda的卸载
最后一步重新打开Terminal很重要!!!!
-
将unix executable文件放到 /usr/local/Cellar下 在bash中可以找到
* Mac桌面不显示东西
-
pip install SomePackage==1.0.0
修改某个包的版本
* https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
$ setsid python a.py > a.txt &
此条命令创建父进程为1的进程,不会因为ssh中断而中断,并将输出重定向至a.txt中,&将命令放在后台运行,并返回一个进程ID。值得注意的是,此条命令下返回的id用ps -ef|grep 无法找到,需将ID+1才是真正的进程ID 原因未知.
- 服务器上PS命令后各列含义
C:处理器使用率百分比
Interesting words & phrases & idioms
- 使用git实现版本控制
- python异常处理
2019春季学期-3月&4月
2019.3.21工作日志
- 上午主要在考虑如何在退出ssh连接后不使运行的进程终止
- 之所以在ssh连接断开后无法进程会终止,是因为所有在ssh上运行的命令其父进程都是此ssh,一旦ssh退出,父进程下的所有子进程都会被杀死。解决方法见如下网站:Linux 技巧:让进程在后台可靠运行的几种方法
- 总结出的命令:
$ setsid python a.py > a.txt &
,其中setsid使得命令的父进程id为1,并将输出重定向至a.txt,&
则使命令在后台运行,同时会返回一个进程ID。值得注意的是,此条命令下返回的id用$ps -ef|grep
无法找到,需将ID+1才是真正的进程ID,原因未知.
- 下午主要在研究numpy,实践证明,numpy可以大幅提高计算速度,可见其已经做过不错的优化。
- numpy有一个非常重要的功能,mask array,可以生成array的mask,对其余的mask进行相应操作,以下是一个例子
>>> a = np.ma.array([1,2,3], mask=[False, False, True])
>>> a
masked_array(data = [1 2 --],
mask = [False False True],
fill_value = 999999)
>>> a.mean()
1.5
- 下午主要试验用数组本身来定义mask,有如下语句:
masked_array = np.ma.array(imageArray, mask=(imageArray==0))
这行代码为imageArray构建mask,mask的位置是数组内所有值为0的位置,这些位置被置位True,代表会被mask。这里的应用场景是计算图片内除了黑色部分的均值,代码如下mean_value = masked_array.mean()
- 同时,修改numpy数组可以用如下的方式,十分便捷
imageArray[imageArray < mean_value] = 0
- python中,如果定义了
a = [1, 2, 3]
,又定义了b = a
,无论修改b还是a都会改变[1, 2, 3]
船牌数据收集
船牌数据集采集记录
日期 | 已标注/筛选数量 | 备注 | 星期 |
---|---|---|---|
9.1 | 0/69 | 全天 | 周二 |
9.2 | 0/88 | 上午 + 五点后 | |
9.3 | 0/45 | 凌晨 + 2:30以后 上午摄像头掉线 | |
9.4 | 0/147 | 全天 | |
9.5 | 0/85 | 全天 | |
9.6 | 0/0 | 集群掉电 | |
9.7 | 0/0 | 集群掉电 | 周一 |
9.8 | 0/0 | 集群掉电,网络故障,收集到十分钟的 | |
9.9 | 0/107 | 10点后 | |
9.10 | 0/101 | 全天;一共有3500多张图 大部分都是固定场景下的误检 | |
9.11 | 0/166 | 全天;对比了YOLOv5和SSD半天的性能,YOLOv5 56张,SSD49张 | |
9.12 | 全天 | ||
9.13 | 全天 | ||
9.14 | 全天 | 周一 | |
9.15 | 0/167 | 至下午4:30 网络中断;对比了YOLOv5和SSD全天(至下午4:30)的性能,YOLOv5 167张,SSD135张 | 周一 |
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.