Tensorflow:
TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,主要是深度神经网络模型。
也是一时兴起开始学习这玩意,走到哪,博客写到哪里,全当记录。
主要参考资料一方面是0.8.0版极客学院翻译版资料,另一方面是油管上周莫烦的视频资料(附上地址:https://www.youtube.com/user/MorvanZhou/featured)
安装配置:
因为不支持Windows系统,只能在Mac或Linux上使用,因此Windows系统可以装个VM虚拟机。
官网是提供了pip, Docker, Virtualenv, Anaconda 等多种方法安装TensorFlow,但是我只走了pip这一条路。
本人使用的是Ubuntu 64位版本,没有多少坑,直接跟着官网走就行(比以前搞得Xamarin,RN之类的要顺畅不知道多少倍),顺心不少。
0.8.0版本:
安装pip
python2.7版本:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python-pip python-dev
python3.4版本:
# Ubuntu/Linux 64-bit
$ sudo apt-get install python3-pip python3-dev
python2.7版本:
# Ubuntu/Linux 64-bit, CPU only, Python 2.7:
$ sudo pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp27-none-linux_x86_64.whl
python3.4版本:
# Ubuntu/Linux 64-bit, CPU only, Python 3.4:
$ sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
0.11.0rc1版本:
安装pip和0.8.0版本一样,就不赘述了。
安装TensorFlow
python2.7
# Ubuntu/Linux 64-bit, CPU only, Python 2.7
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc1-cp27-none-linux_x86_64.whl
python3.4
# Ubuntu/Linux 64-bit, CPU only, Python 3.4
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc1-cp34-cp34m-linux_x86_64.whl
python3.5
# Ubuntu/Linux 64-bit, CPU only, Python 3.5
$ export TF_BINARY_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.11.0rc1-cp35-cp35m-linux_x86_64.whl
最后统一调用
# Python 2
$ sudo pip install --upgrade $TF_BINARY_URL
# Python 3
$ sudo pip3 install --upgrade $TF_BINARY_URL
注意:
1.以上皆为CPU only版本,TensorFlow可以使用GPU启用版本为其运算加速,但我使用了VM虚拟机,又是GTX1070最新显卡,鬼知道会出什么岔子,因此没有用。
2.极客学院只针对了0.8.0版本进行翻译,没有之后版本的。
3.Ubuntu本身自带python3.5.2和2.7版本,不需要另行安装。
4.3Python3.5版本的TensorFlow至少0.9.0版本。
会话控制 Session:
TensorFlow中的Session主要用于执行命令,不管你前面做了什么,比如使用add(),mul()方法,相加也好,相乘也好,不执行Session().run()就不会执行相应的操作。
例子如下:
import tensorflow as tf
matrix1 = tf.constant([[3,3]]) #创建一行两列矩阵
matrix2 = tf.constant([[2],[2]]) #创建两行一列矩阵
product = tf.matmul(matrix1,matrix2) #矩阵乘法
#方法1
sess = tf.Session()
result = sess.run(product) #启用Session().run()才算执行
print(result)
sess.close()
#方法2
with tf.Session() as sess:
result2 = sess.run(product)
print(result2)
方法1是常规的Session使用方法,方法2中可以看出,Session还支持Python中的上下文管理协议with。
变量 Variable 常量 constant:
TensorFlow中创建变量,虽不需要指出变量类型,但是要在创建时表明这个是变量。变量创建方法Variable(),常量创建方法constant()。
例子如下:
import tensorflow as tf
state = tf.Variable(0,name='counter') #初始值0,名字counter
print(state.name)
one = tf.constant(1) #常量
new_value = tf.add(state, one)
update = tf.assign(state, new_value) #new_value参数替换state
init = tf.initialize_all_variables() #初始化变量,变量才会起作用
with tf.Session() as sess:
sess.run(init)
for i in range(3): #循环执行sess.run()三次,累加三次
sess.run(update)
print(sess.run(state)) #不能直接输出state,必须使用sess.run(state)
传入值 placeholder:
可以从外界传入数值的方法,用placeholder保留一个数据的位置,之后可以在Session().run()的时候进行赋值。
例子如下:
import tensorflow as tf
#placeholder类似input
input1 = tf.placeholder(tf.float32) #需要保证placeholer的类型
input2 = tf.placeholder(tf.float32)
output = tf.mul(input1,input2) #乘法运算
with tf.Session() as sess:
print(sess.run(output,feed_dict={input1:[7.],input2:p[2.]})) #以feed_dict形式传入数值