系列目录:
- 机器学习系列-第0篇-开发工具与tensorflow环境搭建
- 机器学习系列-第1篇-感知机识别手写数字(mnist例子分析)
- 机器学习系列-第2篇-CNN识别手写数字(mnist例子分析)
此系列文章是本人用作自己入门机器学习的笔记之用,同时希望锻炼自己的书写能力,很多东西自己看懂了未必理解深刻,能把自己学的东西用自己的方式表达出来,做到言简意赅且能让人看到是一件很难的事情。作为一个新人入门,我希望此系列相关的文章能写得足够让小白(我自己也是小白)看得明白,且能对着步骤一步步操作成功,并且理解每一步是怎么来。
作为开篇,写的是学习环境的搭建,但在此之前是希望每个人对机器学习有基础的了解,知道它是什么,我自己在此之前是通过书籍,视频,论坛等途径了解和学习基础概率。我本人是服务端开发人员,有*年的编程经验, Python不会,大学学的是数学专业,但都已经给回了老师,所以就当我不懂高等数学吧。按照本文操作,或许也还会有很多不懂的地方,比如你不会安装操作系统, 可能第一步就卡住了,这些基础就得靠自己了,文章不能讲得太细。
一 电脑硬件
我浏览了很多入门学习的文章,很少有说电脑硬件要怎样的配置,当然我也不是很懂,这里只能说我自己的选择电脑的过程,好与不好,自己判断。
我的笔记本是thinkpad x230, 好几年前的产品了, 参数如下:
这个配置我是这么用的:WIN7作为宿主机, 装了vmware + centos 7来开发。这样的环境用来做除机器学习之外的开发, 勉强还行,但用来做机器学习,mnist的例子都很难运行起来,报 out of memory。 这极大打击了我的学习积极性,作为一个开发者,如果把时间都浪费在等待机器运行上,不值得。心情也烦躁。 所以我觉得买一台台式机专门用来学这个。
该选择怎么的电脑配置呢? 我也不知道,但心里想价格不要太高,预算3500左右,大概的配置是i7,16内存,1T硬盘,需要有独立显卡2G以上,不然没法体验GPU。 去谷哥和度娘看别人的一些意见,但不适合我。 然后我逛了好几天的淘宝,京东。上面凡是组装机都一堆的吃鸡配置(吃鸡不是的喜好,看到此文包括我肯定都是有更高追求的人),我总结看了一下,假设基本有7个套餐,基本选择第4第5个套餐就够开发用了,有钱的土豪或预算充足的另说,最终我选择了如下配置(内存16G):
我买的那店家服务还可以,收到的货也不错,名字这里不放出来,需要推荐的话,需要的可以加我Q:823960168。另外显示器我再京东上买了一个600多的24寸松人曲面,因为我觉得对屏幕要求不高,所以买了个便宜货,而且是我第一次知道的品牌名字,一套配置下来总价3400多,这个价钱应该算便宜。对于想学习的人,对自身的投资是需要的。然后我们就可以开工了。
二 系统选择
这里系统选择纯是个人喜好,用自己熟悉的最好, 本来我是比较熟悉centos,所以我就安装了centos 7。但是安装 NVIDIA显卡驱动的时候,折腾了我好久都不行,所以我选择重装为ubuntu 16.04。另外还有一个原因是centos的操作界面和支持开发过程用到的工具类软件比较少。
三 软件安装
1 安装显卡驱动(CUDA)
1.1 下载和安装
在官网下载适合自己的驱动:https://developer.nvidia.com/cuda-toolkit-archive
这里 GTX 1050 TI 可以选择 CUDA Toolkit 9.0,CUDA Toolkit 9.1及以上都不支持GTX 1050 及以下的显卡(这些都是安装过程,摸索各种版本发现, 非常耗时)。
我的选择如下,并且第二张图 红色框部分已经告诉你如何安装了,下载好之后按步骤执行就ok
1.2 验证安装是否成功
安装成功之后,检查是否ok,执行 nvcc -V 和 nvidia-smi , 可以看到如下结果:
1.3 设置 cuda 环境变量
在用户的 .bashrc文件后面添加下面两行:
export PATH=$JAVA_HOME/bin:/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
1.4 重启系统
安装完成之后, 最好重启一下系统, 可以看到显示的适配好了很多。然后再执行上面的命令再次验证。
1.5 如果需要重装怎么办?
如已经安装了显卡不支持的更高版本怎么办? 先执行下面的3个命令,卸载了之后再重装:
(1)sudo apt-get --purge remove cuda
(2)sudo apt-get autoremove
(3)sudo apt-get clean
2 安装CUDNN (深度神经网络库 Deep Neural Network library)
2.1 下载和安装
官网下载地址(需要注册账号才能下载):
https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installcuda
这里因为安装了cuda 9.0, 所以只能选 cudnn 7.0.5版本, 选了7.1版本的话,在运行tensorflow的时候会提示版本不对。下载离线包之后,就把对于的 include和lib 复制到cuda的安装目录下的对应include和lib目录就可以了。上文链接里面告诉你执行了,这里截个图:
执行完之后,检查一下/usr/local/cuda/里面是否有cudnn相应的.so和.h
2.2 环境变量设置
在用户的 .bashrc文件后面添加下面两行:
export LPATH=/usr/lib/nvidia-384:$LPATH
export LIBRARY_PATH=/usr/lib/nvidia-384:$LIBRARY_PATH
3 安装tensorflow前的相关依赖检查和安装
3.1 查看内核版本与GCC版本: cat /proc/version && gcc --version
可以看到我的gcc是5.4.0,与内核编译用的gcc版本是一致的(默认安装系统之后,如果你没升级过一般都是一致的)。
3.2 安装与系统kernel版本一致的 headers
命令: sudo apt-get install linux-headers-4.13.0-38-generic
3.3 安装Java JDK版本
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
我选择了 1.8版本, 下载之后,解压放在了/usr/local/jdk1.8.0_161目录下:
然后设置 java 环境变量:
在用户的.bashrc文件末尾增加:export JAVA_HOME=/usr/local/jdk1.8.0_161
4 安装tensorflow
sudo apt-get install python3-pip python3-dev
sudo apt-get install tensorflow-gpu
如果以上安装失败了,可以先执行一下:sudo pip3 install --upgrade tfBinaryURL 再重试
验证tensorflow是否可用:
>>> import tensorflow as tf
>>> hello=tf.constant("welcome, to, tensorflow, world")
>>> sess = tf.Session()
>>> print(sess.run(hello))
可以看到,正确import了 tensorflow,并且已经用gpu运行例子了,说明tensorflow已经可用,至此可以正常开发了。
5 IDE开发工具
开发ide纯个人喜好,不用ide也可以直接在vi等文本编辑器写代码,但我推荐用idea ij。一个好的开发工具,调试方便好多。
下载地址:https://www.jetbrains.com/idea/ (用community版本就行)
解压之后运行 bin里面的idea.sh就行,我最终的开发环境:
四 总结
至此,已经能正常开发,以上过程如果还有问题,可以先自己google。解决不了可以找我。下一篇开始 写 mnist例子分析。