python深度學(xué)習(xí)tensorflow入門基礎(chǔ)教程示例
正文
TensorFlow用張量這種數(shù)據(jù)結(jié)構(gòu)來表示所有的數(shù)據(jù)。
用一階張量來表示向量,如:v = [1.2, 2.3, 3.5] ,如二階張量表示矩陣,如:m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],可以看成是方括號(hào)嵌套的層數(shù)。
1、編輯器
編寫tensorflow代碼,實(shí)際上就是編寫py文件,最好找一個(gè)好用的編輯器,如果你用vim或gedit比較順手,那也可以的啦。我們既然已經(jīng)安裝了anaconda,那么它里面自帶一個(gè)還算不錯(cuò)的編輯器,名叫spyder,用起來和matlab差不多,還可以在右上角查看變量的值。因此我一直使用這個(gè)編輯器。它的啟動(dòng)方式也很簡(jiǎn)單,直接在終端輸入spyder就行了。
2、常量
我們一般引入tensorflow都用語(yǔ)句
import tensorflow as tf
因此,以后文章中我就直接用tf來表示tensorflow了。
在tf中,常量的定義用語(yǔ)句:
a=tf.constant(10)
這就定義了一個(gè)值為10的常量a
3、變量
變量用Variable來定義, 并且必須初始化,如:
x=tf.Variable(tf.ones([3,3])) y=tf.Variable(tf.zeros([3,3]))
分別定義了一個(gè)3x3的全1矩陣x,和一個(gè)3x3的全0矩陣y,0和1的值就是初始化。
變量定義完后,還必須顯式的執(zhí)行一下初始化操作,即需要在后面加上一句:
init=tf.global_variables_initializer()
這句可不要忘了,否則會(huì)出錯(cuò)。
例:自定義一個(gè)拉普拉斯的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))
4、占位符
變量在定義時(shí)要初始化,但是如果有些變量剛開始我們并不知道它們的值,無(wú)法初始化,那怎么辦呢?
那就用占位符來占個(gè)位置,如:
x = tf.placeholder(tf.float32, [None, 784])
指定這個(gè)變量的類型和shape,以后再用feed的方式來輸入值。
5、圖(graph)
如果把下面的python語(yǔ)句改在tf語(yǔ)句,該怎么寫呢:
x=3 y=2 z=x+y print(z)
定義兩個(gè)變量,并將兩個(gè)數(shù)相加,輸出結(jié)果。如果在tf中直接像上面這樣寫,那就錯(cuò)了。x,y,z分別是三個(gè)tensor對(duì)象,對(duì)象間的運(yùn)算稱之為操作(op), tf不會(huì)去一條條地執(zhí)行各個(gè)操作,而是把所有的操作都放入到一個(gè)圖(graph)中,圖中的每一個(gè)結(jié)點(diǎn)就是一個(gè)操作。然后行將整個(gè)graph 的計(jì)算過程交給一個(gè) TensorFlow 的Session
, 此 Session
可以運(yùn)行整個(gè)計(jì)算過程,比起操作(operations)一條一條的執(zhí)行效率高的多。
執(zhí)行代碼如下:
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()即是執(zhí)行,注意要先執(zhí)行變量初始化操作,再執(zhí)行運(yùn)算操作。
Session需要先創(chuàng)建,使用完后還需要釋放。因此我們使用with...as..語(yǔ)句,讓系統(tǒng)自動(dòng)釋放。
例子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以字典的方式對(duì)多個(gè)變量輸入值。
例子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))
定義變量時(shí),沒有指定數(shù)據(jù)類型,則默認(rèn)為float32,因此是5.0而不是5
以上就是python深度學(xué)習(xí)tensorflow入門基礎(chǔ)教程示例的詳細(xì)內(nèi)容,更多關(guān)于python深度學(xué)習(xí)tensorflow基礎(chǔ)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
- 深度學(xué)習(xí)TextRNN的tensorflow1.14實(shí)現(xiàn)示例
- 深度學(xué)習(xí)TextLSTM的tensorflow1.14實(shí)現(xiàn)示例
- python深度學(xué)習(xí)tensorflow訓(xùn)練好的模型進(jìn)行圖像分類
- python深度學(xué)習(xí)tensorflow1.0參數(shù)和特征提取
- python深度學(xué)習(xí)tensorflow1.0參數(shù)初始化initializer
- python深度學(xué)習(xí)tensorflow卷積層示例教程
- python深度學(xué)習(xí)tensorflow實(shí)例數(shù)據(jù)下載與讀取
- 深度學(xué)習(xí)Tensorflow2.8實(shí)現(xiàn)GRU文本生成任務(wù)詳解
相關(guān)文章
PyQt5+QtChart實(shí)現(xiàn)繪制極坐標(biāo)圖
QChart是一個(gè)QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實(shí)現(xiàn)極坐標(biāo)圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-12-12Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼
這篇文章主要介紹了Python編程pygame模塊實(shí)現(xiàn)移動(dòng)的小車示例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01Python如何自動(dòng)獲取目標(biāo)網(wǎng)站最新通知
這篇文章主要介紹了Python如何自動(dòng)獲取目標(biāo)網(wǎng)站最新通知,本文給大家分享實(shí)現(xiàn)思路及示例代碼,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06Python中模塊pymysql查詢結(jié)果后如何獲取字段列表
pymsql是Python中操作MySQL的模塊,其使用方法和MySQLdb幾乎相同。下面這篇文章主要給大家介紹了關(guān)于Python中模塊pymysql查詢結(jié)果后如何獲取字段列表的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來看看詳細(xì)的介紹。2017-06-06Django錯(cuò)誤:TypeError at / ''bool'' object is not callable解決
這篇文章主要介紹了Django 錯(cuò)誤:TypeError at / 'bool' object is not callable解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-08-08python小例子-縮進(jìn)式編碼+算術(shù)運(yùn)算符+定義與賦值
這篇文章主要給大家分享一些python學(xué)習(xí)小例子,內(nèi)容包括縮進(jìn)式編碼風(fēng)格、算術(shù)運(yùn)算符、定義與賦值,需要的小伙伴可以參考一下2022-04-04對(duì)Python 內(nèi)建函數(shù)和保留字詳解
今天小編就為大家分享一篇對(duì)Python 內(nèi)建函數(shù)和保留字詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-10-10Python不使用庫(kù)進(jìn)行矩陣運(yùn)算詳解
這篇文章主要介紹了Python不使用庫(kù)進(jìn)行矩陣運(yùn)算詳解,矩陣乘法中,需要判斷兩個(gè)矩陣是否可以進(jìn)行相乘,即前一個(gè)矩陣的列是否等于后一個(gè)矩陣的行,,需要的朋友可以參考下2023-08-08Python實(shí)現(xiàn)給文件添加內(nèi)容及得到文件信息的方法
這篇文章主要介紹了Python實(shí)現(xiàn)給文件添加內(nèi)容及得到文件信息的方法,可實(shí)現(xiàn)從文件開頭添加內(nèi)容的功能,需要的朋友可以參考下2015-05-05