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

相關文章
相關標籤/搜索