網站首頁 編程語言 正文
正文
TensorFlow用張量這種數據結構來表示所有的數據。
用一階張量來表示向量,如:v = [1.2, 2.3, 3.5] ,如二階張量表示矩陣,如:m = [[1, 2, 3], [4, 5, 6], [7, 8, 9]],可以看成是方括號嵌套的層數。
1、編輯器
編寫tensorflow代碼,實際上就是編寫py文件,最好找一個好用的編輯器,如果你用vim或gedit比較順手,那也可以的啦。我們既然已經安裝了anaconda,那么它里面自帶一個還算不錯的編輯器,名叫spyder,用起來和matlab差不多,還可以在右上角查看變量的值。因此我一直使用這個編輯器。它的啟動方式也很簡單,直接在終端輸入spyder就行了。
2、常量
我們一般引入tensorflow都用語句
import tensorflow as tf
因此,以后文章中我就直接用tf來表示tensorflow了。
在tf中,常量的定義用語句:
a=tf.constant(10)
這就定義了一個值為10的常量a
3、變量
變量用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))
4、占位符
變量在定義時要初始化,但是如果有些變量剛開始我們并不知道它們的值,無法初始化,那怎么辦呢?
那就用占位符來占個位置,如:
x = tf.placeholder(tf.float32, [None, 784])
指定這個變量的類型和shape,以后再用feed的方式來輸入值。
5、圖(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
原文鏈接:https://www.cnblogs.com/denny402/p/5852083.html
相關推薦
- 2022-07-08 C#四種計時器Timer的區別和用法_C#教程
- 2022-07-08 C#使用GDI+實現生成驗證碼_C#教程
- 2022-06-11 Kubernetes集群環境初始化_云其它
- 2022-06-01 利用20行Python?代碼實現加密通信_python
- 2022-09-09 Oracle存儲過程與函數的詳細使用教程_oracle
- 2022-11-10 關于docker?cgroups資源限制的問題_docker
- 2022-09-04 C#使用async和await實現異步編程_C#教程
- 2022-04-18 python?dataframe實現統計行列中零值的個數_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支