这些天忙着…哈哈,一些很幸福的事情,就没有顾着博客了。
寒假第一周过去了,也是时候开始新的学习路程。
老的那些坑,也就开始慢慢填吧。
这个新坑,就说一说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,中间都要进行一大堆一大堆的运算,每一个运算会形成一个结点,相应结点形成复杂的网络,我们叫做神经网络。
就仿佛这样一个神经元,传入了几个参数,然后输出结果。
同样多个神经元可以如上图所示,形成分层的神经网络。
每一次信息输入的时候,相应的结点会被激活,然后运算,运算之后输出结果。
关于更加详细的叙述,就留给下一节吧,这里放一段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))