TensorFlow 学习记录一(macOS下的安装和初探)

Jan 20, 2017


这些天忙着…哈哈,一些很幸福的事情,就没有顾着博客了。

寒假第一周过去了,也是时候开始新的学习路程。

老的那些坑,也就开始慢慢填吧。

这个新坑,就说一说TensorFlow的那些事儿~

首先是安装

Tensor似乎对Windows系统很不友好,幸好我的系统是macOS~于是主要讲讲在macOS下安装TensorFlow的一些事。

先说结果,在两个多小时的坑爹旅程中,终于将Python2.7和Python3.6都安装上了TensorFlow,并且能在Sublime Text3上直接运行。

讲一下我自己的步骤吧:

  • 安装Python

    这里我电脑自带的是Python2.7, 于是又下了一个Python3.6, 为了防止可能出现的版本问题。

    至于如何安装Python,官网上选定版本,然后一路傻瓜操作就好了呀~这里不多说了。

  • 安装pip

    这里有一个非常坑爹的大坑,先卖个关子,安装pip直接在终端键入下面命令即可,其中pip默认是Python2的,要给Python3安装的话,可以把pip换成pip3:

$ sudo easy_install pip

    当然,还没有结束,因为pip安装是有时间限制的,而我们的TensorFlow是从Google的服务器上弄来的…所以安装会很慢,这样以来就容易超出pip安装的时间限制,于是就在安装中途报错(报错日志显示为RuntimeError),所以我们需要改一下pip的时间限制

    py2下就是这样

$ pip --default-timeout=1000000 install -U pip

    py3下就是这样

$ pip3 --default-timeout=1000000 install -U pip
  • 安装TensorFlow

    好的,上面都是小菜,下面正餐到了。

    首先先给出官方下载的文档,连我的英语水平都可以看懂(捂脸逃

    然后给出一份中文翻译过的文档,是极客学院的人翻译的,虽然我不喜欢国内的it培训网站,但有些贡献还是支持一个的。

    pip已经在上面安装过了, 各位可以直接从安装TensorFlow开始。

    其实也很简单,就两行命令:

    py2:

$ sudo easy_install --upgrade six
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py2-none-any.whl

    py3:

$ sudo easy_install --upgrade six
$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/mac/tensorflow-0.8.0-py3-none-any.whl

    安装完需要检验一下是不是安装好了,打开终端,输入:

$ python

    或者:

$ python3

    然后输入官方提供的测试代码,py2可能需要改一下print..:

>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>>

    如果没有任何报错,就差不多成功了。

    要注意第二个是从Google的服务器里下载的,如果被墙了,就去手动搜一个名字一样的whl的压缩格式的包,或者给浏览器翻墙后下载到本地然后导入本地whl包的路径。

    这个里面还有CPU和GPU两种不同的TensorFlow,具体详情可以看Git里提供的官方英文文档。

    至于Windows….还是弄个Linux的虚拟机或者什么吧..

然后是初探

去百度,谷歌,知乎等等地方可以搜到很多关于TensorFlow的介绍,用途云云。总之就是可以套套套机器学习,神经网络模型的一套工具。

比如这一个知乎问题里的回答

从理念开始说起:

你现在看到了一个人,怎么判断出那个人是一个人呢,你的眼睛耳朵鼻子等等器官会输入一大堆信息给你的大脑,我们叫做Input,这一堆Input经过你大脑你也不知道怎么回事的处理,就处理出来一个输出(Output),这个输出告诉你,这个东西,是一个人。

而每一个Input,到最后的Output,中间都要进行一大堆一大堆的运算,每一个运算会形成一个结点,相应结点形成复杂的网络,我们叫做神经网络。

image

就仿佛这样一个神经元,传入了几个参数,然后输出结果。

image

同样多个神经元可以如上图所示,形成分层的神经网络。

每一次信息输入的时候,相应的结点会被激活,然后运算,运算之后输出结果。

关于更加详细的叙述,就留给下一节吧,这里放一段py3代码,也就是下一节研究的重点,相当于卖一个关子吧~

import tensorflow as tf 
import numpy as np 

# creat data
x_data = np.random.rand(100).astype(np.float32)
y_data = x_data * 0.1 + 0.3

### creat tensorflow struture start
Weight = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
biases = tf.Variable(tf.zeros([1]))

y = Weight * x_data + biases
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)

init = tf.initialize_all_variables()

### creat tensorflow structure end

sess = tf.Session()
sess.run(init)  # Very important

for step in range(201):
    sess.run(train)
print(step, sess.run(Weight), sess.run(biases))