0%

2017年过去已经有几天了,这几天我总结了2017年的学习、找工作、阅读和影视方面的大大小小的事情,希望坚持每年写一个年终总结,整理去年发生的事,更好地认识自我,做更好的自己。

阅读全文 »

简言之2条命令即可:

1
2
3
4
5
# 在命令行下
# Caffe
$ GLOG_minloglevel=2 caffe-command
# Tensorflow
$ TF_CPP_MIN_LOG_LEVEL=3 tensorflow-command

或者在python文件中,import caffe或tensorflow之前,执行如下的语句:

1
2
3
4
5
6
7
8
# 在Python文件中
# Caffe
import os
os.envrion['GLOG_minloglevel'] = '2'

# Tensorflow
import os
os.envrion['TF_CPP_MIN_LOG_LEVEL'] = '3'

参考:

  1. https://stackoverflow.com/questions/29788075/setting-glog-minloglevel-1-to-prevent-output-in-shell-from-caffe
  2. http://littlewhite.us/archives/157
  3. https://stackoverflow.com/questions/38073432/how-to-suppress-verbose-tensorflow-logging

有的时候系统安装的OpenCV版本和你需要的版本不一样,而你又没有权限或者为了兼容不能修改系统的OpenCV,这个时候你就得自己编译OpenCV,然后在需要的代码里面引用你编译的版本。整个过程不复杂,但是之前一直没搞清楚,最近经师弟点拨才明白,这里记录一下。

阅读全文 »

在Linux环境下执行程序的时候,有的时候会出现段错误(‘segment fault’),同时显示core dumped,就像下面这样:

1
[1]    15428 segmentation fault (core dumped)  ./a.out

下面是我网上找到的段错误的定义和说明:

A segmentation fault (often shortened to segfault) is a particular error condition that can occur during the operation of computer software. In short, a segmentation fault occurs when a program attempts to access a memory location that it is not allowed to access, or attempts to access a memory location in a way that is not allowed (e.g., attempts to write to a read-only location, or to overwrite part of the operating system). Systems based on processors like the Motorola 68000 tend to refer to these events as Address or Bus errors.

Segmentation is one approach to memory management and protection in the operating system. It has been superseded by paging for most purposes, but much of the terminology of segmentation is still used, "segmentation fault" being an example. Some operating systems still have segmentation at some logical level although paging is used as the main memory management policy.

On Unix-like operating systems, a process that accesses invalid memory receives the SIGSEGV signal. On Microsoft Windows, a process that accesses invalid memory receives the STATUS_ACCESS_VIOLATION exception.

简单理解就是访问了不该访问的内存就会产生段错误。
而core dump是一种将出错时的调用堆栈等信息写入到一个文件中,方便后面调试。Ubuntu下需要进行一些设置才能正确地调试core dump,下面是详细的说明。

阅读全文 »

argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数,当你的代码需要频繁地修改参数的时候,使用这个工具可以将参数和代码分离开来,让你的代码更简洁,适用范围更广。
argparse使用比较简单,常用的功能可能较快地实现出来,下面我分几个步骤,以Python3为例,逐渐递增地讲述argparse的用法。

阅读全文 »

因为CuDNN函数接口更新的原因,以前用低版本写的项目在新版本的CuDNN环境下编译就会出问题。例如,py-faster-rcnn代码在最新版的CuDNN6上面编译时就会报错。
解决这个问题的一个方法是禁用CUDNN,即修改Makefile.config里面的第5行,在前面加#。这种方法没法使用CuDNN加速,不推荐。这里我们使用一种比较土的方法,即将使用了旧的CuDNN函数的文件都换成新的caffe里面的文件即可。

阅读全文 »

概述

这里列举了我常用的一些Linux命令行下的技巧,希望对大家有帮助。

阅读全文 »

概述

Caffe里面的一种数据存储和读取方式是使用数据库格式,将数据保存到特定的一个数据库文件中,然后在代码里面整个读入这个数据库文件。Caffe支持的数据库格式包括lmdb和leveldb,可能很多人是因为caffe才知道这两个库的,但其实这两个库也是非常出名的工具。下面就展示下在Caffe里面用Python接口调用生成的LMDB或者LEVELDB格式的文件的代码吧。

阅读全文 »

这是一些使用VNC连接服务器的总结,这些操作都是在Ubuntu操作系统下进行的。

阅读全文 »

因为这台GPU服务器闲置了很久,经过这两天的安装,现在基本能用了。整个过程其实挺坎坷的,因此记录下此次安装过程中遇到的坑,后面好参考。服务器从原先的OpenSuse换成了Ubuntu 16.04 LTS 发行版。

阅读全文 »