1. 程式人生 > >AI學習之路(8): 定義張量變數

AI學習之路(8): 定義張量變數

在前面,我們已經學習到生成訓練資料,接著下來就要開始進行訓練TF的神經網路了。但是我們從TensorFlow的名稱就知道要使用張量來表示資料結構,並且讓張量沿著不同的邊進行流動,才可以產生神經元出來,也就是權重值。直接使用Python的資料結構可行嗎?肯定不行,否則就不會建立張量這個單詞出來了。因為張量是一維到多維的向量,它的維度可能很高,達到數萬個維度,遠遠超過目前人類所能理解的維數。因此在TF裡建立了一個張量的資料型別,我們要使用這個資料型別才可能與TF進行溝通,否則就像我們跟老外說中文,他們怎麼可能聽得懂呢,所以在進行訓練之前,要先學習與TF溝通的語言,否則就是臨淵羨魚,不如我們退而結網咖。

好吧,先來看看張量的資料型別建構函式:

tf.Variable.__init__(initial_value=None, trainable=True, collections=None, validate_shape=True, caching_device=None, name=None, variable_def=None, dtype=None, expected_shape=None, import_scope=None)

從這個建構函式裡,就知道tf.Variable是一個變數類,它可以用來宣告張量物件。它的輸入引數是比較多,但很多都是可以使用預設引數即可。這個類主要用初始化值initial_value來構造一個張量變數,新宣告的變數主要新增到圖集合裡,預設是新增到圖集合[GraphKeys.GLOBAL_VARIABLES],如果trainable=True為真時,同時新增到圖集合GraphKeys.TRAINABLE_VARIABLES。其實這個建構函式主要建立了兩個操作:一個是生成變數的操作,一個是設定初始值的操作。

引數:

initial_value:

 張量或者可轉換為張量的Python資料型別物件,設定新張量的初始值。除了validate_shape設定為False時不需要指定張量的行列形式,其它情況下必須指定張量的行列形式。也可以使用不帶初始值的方式來建立變數,但必須指明dtype的型別,也就是將要儲存資料的型別。

trainable:

 設定為True時新增這個變數到圖集合GraphKeys.TRAINABLE_VARIABLES.這是很多優化器類使用的預設變數列表。

collections:

 變數將要新增到的圖集合名稱。預設是[GraphKeys.GLOBAL_VARIABLES].

validate_shape: 

如果設定為False允許變數不指明行列形狀;如果設定為True必須指明行列形狀。

caching_device:

 可選的快取裝置字串,預設是變數裝置,如果非空設定為另一個裝置。主要用來優化變數拷貝時的操作。

name:

 可選的變數名稱,預設是系統自動建立唯一的名稱。

variable_def: 

VariableDef定義協議緩衝區格式。

dtype: 

設定變數的儲存的資料型別。預設從初始值獲取,如果沒有初始化需要指定。

expected_shape: 

預期的行列形式。如果設定這個就會判斷初始化是否符合這個行列形式。

import_scope: 

可選的名稱空間字串。


異常:


ValueError: 如果variable_def和initial_value同時指定時發生。
ValueError: 如果沒有初始化值,並且沒有設定validate_shape為True時發生。

已經理解這個型別的定義了,接著下來實際操作一下吧。

#python 3.5.3  蔡軍生  
#http://edu.csdn.net/course/detail/2592  
#

import tensorflow as tf

#建立張量變數
W = tf.Variable([1,2,3], name='W')
print(W)

#顯示它的值
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    print(W.eval())
執行這段程式碼,輸出結果如下:

====================== RESTART: D:/AI/sample/tf_1.16.py ======================
Tensor("W/read:0", shape=(3,), dtype=int32)
[1 2 3]
>>> 

在這個例子裡,通過Python的資料結構列表[1,2,3]來建立一個張量的變數,同時把它的名稱改為“W”,可見後面打印出來時,看到叫做W的名稱了。接著把張量結構顯示出來,後面程式碼主要通過TF計算之後,再把結果顯示出來。
到這裡,終於學會張量變數的定義,就已經踏入與TF交流的第一步了。

1. C++標準模板庫從入門到精通 

2.跟老菜鳥學C++

3. 跟老菜鳥學python

4. 在VC2015裡學會使用tinyxml庫

5. 在Windows下SVN的版本管理與實戰 

7.在VC2015裡使用protobuf協議

8.在VC2015裡學會使用MySQL資料庫


相關推薦

AI學習8: 定義變數

在前面,我們已經學習到生成訓練資料,接著下來就要開始進行訓練TF的神經網路了。但是我們從TensorFlow的名稱就知道要使用張量來表示資料結構,並且讓張量沿著不同的邊進行流動,才可以產生神經元出來,也就是權重值。直接使用Python的資料結構可行嗎?肯定不行,否則就不會建立

(轉)USB小白學習8FX2LP cy7c68013——Slave FIFO 與FPGA通信

讀取 批量傳輸 clock 數據接收 select 緩沖 targe operation 暫停 此博客轉自CSDN:http://blog.csdn.net/xx116213/article/details/50535682 1 USB 概述 USB名稱解釋 USB是通

AI學習19TensorFlow裡的矩陣乘法

                如果對矩陣的知識有點遺忘,有點陌生,有點想不起來,請先看看這個網頁:基礎知識已經補過了,就直接來使用TF的矩陣乘法了。tf.matmul(a, b, transpose_a=False, transpose_b=False, adjoint_a=False, adjoint_b

AI學習21卷積核的使用

下面的例子,用來學習TF裡的卷積。#python 3.5.3 蔡軍生 #http://edu.csdn.net/course/detail/2592 # from __future__ import print_function import tenso

AI學習10: 的常量2

tf.fill(dims, value, name=None)建立一個張量填充指定的常數。引數:dims: 整數型別的列表物件,或者一維張量,表示行列形式。value: 填充的常量(0維張量)返回值:填充指定的張量常量。例子:#python 3.5.3 蔡軍生 #htt

es6學習8:物件的擴充套件

1.屬性的簡潔表示法 vvar target = { a: 1 }; var source1 = { b: 2 }; var source2 = { c: 3 }; Object.assign(target, source1, source2); target // {

AI學習6: NumPy的使用

前面學習怎麼樣檢視numpy的版本號,這才是剛剛開始,現在來開始更深入地學習一下它,否則以後會很麻煩的,更加看不懂那些例子的程式碼了。一個用python實現的科學計算包。包括:1、一個強大的N維陣列物件Array;2、比較成熟的(廣播)函式庫;3、用於整合C/C++和Fort

JAVA基礎學習數組的定義

對象 ava void 數據類型 class 語法 info int .com 什麽是數組:就是一堆相同類型的數據放一堆(一組相關變量的集合) 定義語法: 聲明並開辟數組     數據類型 數組名[] = new 數據類型[長度]; 分布完成 聲明數組:數據類型

JAVA基礎學習對象數組的定義及使用

get system turn book code null 實例 urn TE 兩種定義方式: 動態初始化: 定義並開辟數組:類名稱 對象數組名[] = new 類名稱[長度] 分布按成:類名稱 對象數組名[] = null; 對象數組名 = new 類名稱[長度]

PyTorch學習level2——自定義資料讀取

在上一篇部落格PyTorch學習之路(level1)——訓練一個影象分類模型中介紹瞭如何用PyTorch訓練一個影象分類模型,建議先看懂那篇部落格後再看這篇部落格。在那份程式碼中,採用torchvision.datasets.ImageFolder這個介面來讀取

python學習

[1] size class dex epc uri msu 語句 這就是 繼續昨天的學習,學到了數組。 首先有兩個數組,name1和name2.我們可以將兩個數組合並 name1=[1,2,3,4] name2=[5,6,7,8] names=name1.extend(

Linux學習幫助命令

查看系統 lin 查看 inux 舉例 config pro nbsp 雜項 幫助命令man .man  命令  #獲取指定命令的幫助 .man  ls    #查看ls的幫助 man的級別 1 查看命令的幫助 2 查看可被內核調用的函數的幫助 3 查看函數的

python學習使用socketserver進行ftp斷點續傳

def += __init__ con 不存在 不為 local 接收 class 最近學習python到socketserver,本著想試一下水的深淺,采用Python3.6. 目錄結構如下: receive_file和file為下載或上傳文件存放目錄,ftp_clie

我的學習SQL盲註學習

網絡安全 dvwa sql盲註 我的學習之路,現在零基礎,是一個小白,請各位大牛批評指正!寫下這篇,是對自己的一個思路的整理,僅供參考。 Dvwa中登錄進入,首先在DVWA Security中設置等級為low,然後進入SQL Injection(blind),隨意輸入一個數字進行抓包,然後找

Hibernate學習

ring int 表示 gen prop generator 需要 blog hibernate 簡述 多對多關系映射 多對多關系映射需要一張中間表來維護關系      一:Role類與Function類 1 publi

Hibernate學習

oid bject 需要 .com build action logs 結果 gin hql:hibernate query language hibernate查詢語言 1、單屬性查詢 1 public void testQuery1(){ 2

BAT解密:互聯網技術發展8- 用戶層技術剖析

用戶管理 相同 開源 大廠 cookie alt 之間 平臺 之路 互聯網業務用戶層技術主要包括:用戶管理、消息推送、存儲雲、圖片雲。用戶管理互聯網業務的一個典型特征就是通過互聯網將眾多分散的用戶連接起來。因此用戶管理是互聯網業務不可缺少的一部分。略微大一點的互聯網業務

PHP學習

設有 src fault ... 根據 條件判斷 滿足 循環 獲取 2017.08.13 Day 5  周日  晴 PHP-順序結構 順序結構就像一條直線,按著順序一直往下執行。我們編寫的代碼默認都是按照順序結構執行的。 PHP條件結構之if…else… 條件結

PHP學習

data 循環 marker 輸出 bsp this 兩個 針對 設計 2017.08.23-24 Day 6  周三-周四  晴(臺風) HP數組定義 數組就是一個鍵值對組成的語言結構,鍵類似於酒店的房間號,值類似於酒店房間裏存儲的東西。 如果你去某個酒店住店,服

Java學習流程控制語句

循環 cas 學習之路 將不 乘法表 length 跳出循環 spa int if、if…else…語句 if (true) { System.out.println("為真時執行");