caffe_segnet中自带caffe,但是安装完毕caffe,无法运行caffe_segnet。

对于cudnn5版本的:https://github.com/TimoSaemann/caffe-segnet-cudnn5,若不是用此版本,编译不过去

安装 Protocol Buffers:

1
2
3
4
5
6
7
8
9
10
cd ~
git clone https://github.com/google/protobuf.git
sudo apt-get install autoconf automake libtool curl make g++ unzip
cd protobuf
./autogen.sh
./configure --prefix=/usr
make
make check
sudo make install
sudo ldconfig # refresh shared library cache.

安装caffe_segnet:

阅读全文 »

通俗理解

首先半正定矩阵定义为:

其中$X$是向量,$M$是变换矩阵

我们换一个思路看这个问题,矩阵变换中,$MX$代表对向量$X$进行变换,我们假设变换后的向量为$Y$,记做$Y=MX$。于是半正定矩阵可以写成:

这个是不是很熟悉呢? 他是两个向量的内积。 同时我们也有公式:

阅读全文 »

向量的内积

也称为向量的的数量积、点积

代数定义

n维平面上有,向量$a$为$[a_1,a_2,…,a_n]$,向量$b$为$[b_1,b_2,…,b_n]$。则向量$a$和向量$b$的点积公式为:

注意:上面得到的最终为标量。

阅读全文 »

利用Theano求多维函数的梯度和hessian矩阵

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import theano
import theano.tensor as T
from theano import function

# 求梯度
x, y, a, b = T.dscalars('x','y','a','b')
s = T.sum((x + 10 * y) ** 2 + 5 * (a - b) ** 2 + (y - 2 * a) ** 4 + 10 * (x - b) ** 4)
gs = T.grad(s, [x,y,a,b])
dlogistic = function([x,y,a,b], gs)
print dlogistic(0.22, 0.54, 0.67, 0.78)

# 求hessian矩阵
x = T.dvector('x')
y = (x[0] + 10 * x[1]) ** 2 + 5 * (x[2] - x[3]) ** 2 + (x[1] - 2 * x[2]) ** 4 + 10 * (x[0] - x[3]) ** 4
cost = y.sum()
f = theano.gradient.hessian(y, wrt=x)
dlogistic = theano.function([x], f)
print dlogistic([0.22, 0.54, 0.67, 0.78])

# 求梯度
f = T.grad(cost, wrt=x)
dlogistic = function([x], f)
print dlogistic([0.22, 0.54, 0.67, 0.78])

因为本人经常修电脑,23333。。这里记录了一些常见的错误及其解决方法

故障一

现象:移动硬盘复制东西很慢

解决方法:

在热插拔之后,容易导致硬盘的损坏,甚至出现坏道等。这时,可以使用如下方式解决。

阅读全文 »

升级GCC

第一步,下载你需要的gcc源码,https://mirror.sergal.org/gnu/gcc/ 到这个地址去找就可以了。这里我们假设安装的是gcc-5.5.0.tar.gz。国内源为 https://mirrors.ustc.edu.cn/gnu/gcc/

第二步,tar -xzvf gcc-5.5.0.tar.gz然后cd gcc-5.5.0

第三步,找到./contrib/download_prerequisites文件,这里面放着所需的依赖,由于是国内的网站可能会在线安装不了(如果在线安装成功,直接进入第四步),这里讲下手动安装,其实就是三个依赖gmp-4.3.2.tar.gz,mpfr-3.1.4.tar.bz2,mpc-1.0.1.tar.gz,不同版本的gcc可能需要不同的版的,如果出现错误,根据错误提示更换需要的版本即可,这三个依赖最好按照顺序安装,因为它们之间也是有依赖关系的。

  1. 安装gmp-4.3.2.tar.gz,到这里找你要的版本http://ftp.gnu.org/pub/gnu/gmp/,然后解压`tar -xzvf gmp-4.3.2.tar.gz,然后进入目录cd gmp-4.3.2,再依次执行./configure —prefix=/data4/zhaodali/usr && make -j 8 && make install`
  2. 安装`mpfr-3.1.4.tar.bz2,到这里找你要的版本https://www.mpfr.org/history.html,然后解压`tar -jxvf mpfr-3.1.4.tar.bz2,然后进入目录cd mpfr-3.1.4,再依次执行./configure —prefix=/data4/zhaodali/usr && make -j 8&& make install`
  3. 安装mpc-1.0.1.tar.gz,到这里找你要的版本http://ftp.gnu.org/gnu/mpc/ 或者 https://gcc.gnu.org/pub/gcc/infrastructure/,然后解压`tar -xzvf mpc-1.0.1.tar.gz,然后进入目录cd mpc-1.0.1,再依次执行./configure —prefix=/data4/zhaodali/usr && make -j 8 && make install`
阅读全文 »

删除残余的配置文件

通常Debian/Ubuntu删除软件包可以用两条命令

1
2
sudo apt-get remove <package-name>
sudo apt-get purge <package-name>

remove将会删除软件包,但会保留配置文件.purge会将软件包以及配置文件都删除.

找出系统上哪些软件包留下了残余的配置文件

阅读全文 »

scipy库

使用sicpy.io即可.sicpy.io提供了两个函数loadmat和savemat,非常方便.

以前也有一些开源的库(pymat和pymat2等)来做这个事,

不过自从有了numpy和scipy以后,这些库都被抛弃了.

下面是一个简单的测试程序,具体的函数用法可以看帮助文档:

阅读全文 »

list去重

问题就是对一个list中的新闻id进行去重,去重之后要保证顺序不变。

1
2
3
4
5
[1,4,3,3,4,2,3,4,5,6,1]
lambda x,y:x if y in x else x + [y]
reduce(func, [[], ] + ids)

Out[7]: [1, 4, 3, 2, 5, 6]

取出列

1
2
3
4
5
6
7
8
>>> a
[[44, 54, 1], [1, 5, 0]]
>>> b = [x[-1] for x in a]
>>> b
[1, 0]
>>> b = [x[:-1] for x in a]
>>> b
[[44, 54], [1, 5]]
阅读全文 »

html转markdown

写的一个将博客转成markdown的脚本,目前支持简书,知乎,CSDN,项目地址

使用方法 python html2md.py -u <url>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
import os
import sys
import getopt
import requests
import random
import re
import html2text
from bs4 import BeautifulSoup

useragents = [
'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
]

def jinashu(url):
## 浏览器头部
headers = {
'Host': 'www.jianshu.com',
'Referer': 'https://www.jianshu.com/',
'User-Agent': random.choice(useragents)
}
## 获取网页主体
html = requests.get(url,headers=headers).text

## bs4
soup = BeautifulSoup(html,"html5lib")
title = soup.find_all("title")[0].get_text()
article = str(soup.find_all("div",class_="show-content")[0])

## 替图片的src加上https://方便访问
article = re.sub('(src=")|(data-original-src=")','src="https:',article)

## 写入文件
pwd = os.getcwd() # 获取当前的文件路径
dirpath = pwd + '/jianshu/'
write2md(dirpath,title,article)
print(title+"下载完成....")

def csdn(url):
headers = {
'Host': 'blog.csdn.net',
'Referer': 'http://blog.csdn.net/',
'User-Agent': random.choice(useragents)
}
## 获取网页主体
html = requests.get(url,headers=headers).text

## bs4
soup = BeautifulSoup(html,'html5lib')
title = soup.find_all('title')[0].get_text()
article = str(soup.find_all('article')[0])

## 写入文件
pwd = os.getcwd() # 获取当前的文件路径
dirpath = pwd + '/CSDN/'
write2md(dirpath,title,article)
print(title+"下载完成....")

def zhihu(url):
headers = {
'Host': 'zhuanlan.zhihu.com',
'Referer': 'https://www.zhihu.com/',
'User-Agent': random.choice(useragents)
}
html = requests.get(url,headers=headers).text

## bs4
soup = BeautifulSoup(html,'html5lib')
title = soup.find_all('title')[0].get_text()
article = str(soup.find_all('div',class_='Post-RichText')[0])

## 写入文件
pwd = os.getcwd() # 获取当前的文件路径
dirpath = pwd + '/ZhiHu/'
write2md(dirpath,title,article)
print(title+"下载完成....")

def doelse(url):
headers = {
'User-Agent': random.choice(useragents)
}
res = requests.get(url=url ,headers=headers) # 获取整个html页面

h = html2text.HTML2Text()
h.ignore_links = False
soup = BeautifulSoup(res.text,'html5lib')
title = soup.title.text # 获取标题
html = str(soup.body)
article = h.handle(html)

pwd = os.getcwd() # 获取当前文件的路径
dirpath = pwd + '/Else/'
if not os.path.exists(dirpath):# 判断目录是否存在,不存在则创建新的目录
os.makedirs(dirpath)
## 写入文件
pwd = os.getcwd() # 获取当前的文件路径
dirpath = pwd + '/ELSE/'
write2md(dirpath,title,article)
print(title+"下载完成....")

"""
传入文件路径,title,article
"""
def write2md(dirpath,title,article):
## 创建转换器
h2md = html2text.HTML2Text()
h2md.ignore_links = False
## 转换文档
article = h2md.handle(article)
## 写入文件
if not os.path.exists(dirpath):# 判断目录是否存在,不存在则创建新的目录
os.makedirs(dirpath)
# 创建md文件
with open(dirpath+title+'.md','w',encoding="utf8") as f:
lines = article.splitlines()
for line in lines:
if line.endswith('-'):
f.write(line)
else:
f.write(line+"\n")

def main(argv):
try:
opts,args = getopt.getopt(argv,"hu:",["url"])
except getopt.GetoptError:
print("python html2md.py -u <url>")
for opt,arg in opts:
if opt == "-h":
print("python html2md.py -u <url>")
sys.exit(2)
elif opt in ("-u", "-url"):
print()
checkSite(arg)
else:
print("python html2md.py -u <url>")

## 检查网站,使用哪个下载器
def checkSite(url):
if url.find('csdn') != -1:
csdn(url)
elif url.find('jianshu') != -1:
jinashu(url)
elif url.find('zhihu') != -1:
zhihu(url)
else:
doelse(url)

if __name__ == "__main__":
main(sys.argv[1:])

禁用js复制公式

在浏览器输入chrome://settings/content/javascript,例如禁用cnblog的js,就可以禁用掉markdown公式渲染:

阅读全文 »