tensorflow学习笔记二:入门基础

TensorFlow用张量这种数据结构来表示全部的数据。用一阶张量来表示向量,如:v = [1.2, 2.3, 3.5] ,如二阶张量表示矩阵,如:m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],能够当作是方括号嵌套的层数。python

一、编辑器vim

编写tensorflow代码,实际上就是编写py文件,最好找一个好用的编辑器,若是你用vim或gedit比较顺手,那也能够的啦。咱们既然已经安装了anaconda,那么它里面自带一个还算不错的编辑器,名叫spyder,用起来和matlab差很少,还能够在右上角查看变量的值。所以我一直使用这个编辑器。它的启动方式也很简单,直接在终端输入spyder就好了。数据结构

二、常量编辑器

咱们通常引入tensorflow都用语句spa

import tensorflow as tfcode

所以,之后文章中我就直接用tf来表示tensorflow了。对象

在tf中,常量的定义用语句:blog

a=tf.constant(10)

这就定义了一个值为10的常量ait

三、变量io

变量用Variable来定义, 而且必须初始化,如:

x=tf.Variable(tf.ones([3,3]))
y=tf.Variable(tf.zeros([3,3]))

分别定义了一个3x3的全1矩阵x,和一个3x3的全0矩阵y,0和1的值就是初始化。

变量定义完后,还必须显式的执行一下初始化操做,即须要在后面加上一句:

init=tf.global_variables_initializer()

这句可不要忘了,不然会出错。

例:自定义一个拉普拉斯的W变量:

import tensorflow as tf
import numpy as np
x=np.array([[1,1,1],[1,-8,1],[1,1,1]])
w=tf.Variable(initial_value=x)
sess=tf.Session()
sess.run(tf.global_variables_initializer())
print(sess.run(w))

四、占位符

变量在定义时要初始化,可是若是有些变量刚开始咱们并不知道它们的值,没法初始化,那怎么办呢?

那就用占位符来占个位置,如:

x = tf.placeholder(tf.float32, [None, 784])

指定这个变量的类型和shape,之后再用feed的方式来输入值。

五、图(graph)

若是把下面的python语句改在tf语句,该怎么写呢:

x=3
y=2
z=x+y
print(z)

定义两个变量,并将两个数相加,输出结果。若是在tf中直接像上面这样写,那就错了。x,y,z分别是三个tensor对象,对象间的运算称之为操做(op), tf不会去一条条地执行各个操做,而是把全部的操做都放入到一个图(graph)中,图中的每个结点就是一个操做。而后行将整个graph 的计算过程交给一个 TensorFlow 的Session, 此 Session 能够运行整个计算过程,比起操做(operations)一条一条的执行效率高的多。

执行代码以下:

import tensorflow as tf

x = tf.Variable(3)
y = tf.Variable(5)
z=x+y
init =tf.global_variables_initializer()
 with tf.Session() as sess: 
sess.run(init)
print(sess.run(z))

其中sess.run()便是执行,注意要先执行变量初始化操做,再执行运算操做。

Session须要先建立,使用完后还须要释放。所以咱们使用with...as..语句,让系统自动释放。

例子1:hello world

import tensorflow as tf
word=tf.constant('hello,world!')
with tf.Session() as sess:
    print(sess.run(word))

例子2:加法和乘法

import tensorflow as tf 
a = tf.placeholder(tf.int16)
b = tf.placeholder(tf.int16)
add = tf.add(a, b)
mul = tf.mul(a, b)

with tf.Session() as sess:
    print('a+b=',sess.run(add, feed_dict={a: 2, b: 3}))
    print('a*b=',sess.run(mul, feed_dict={a: 2, b: 3}))

此处使用feed_dict以字典的方式对多个变量输入值。

例子3: 矩阵乘法

import tensorflow as tf 
a=tf.Variable(tf.ones([3,2]))
b=tf.Variable(tf.ones([2,3]))
product=tf.matmul(5*a,4*b)
init=tf.initialize_all_variables()

with tf.Session() as sess:
    sess.run(init)
    print(sess.run(product))

 其中

product=tf.matmul(5*a,4*b)

也能够改为 

product=tf.matmul(tf.mul(5.0,a),tf.mul(4.0,b))

定义变量时,没有指定数据类型,则默认为float32,所以是5.0而不是5

相关文章
相关标签/搜索