1. 程式人生 > >tensorflow原始碼分析(1)

tensorflow原始碼分析(1)

variable類:

       通過例項化Variable類可以新增一個變數到graph,在使用變數之前必須對變數顯示的初始化,初始化可以使用assign為變數賦值也可以通過變數本身的initializer方法。

      

     上圖主要是介紹在graph中預設有兩個變數得colletion,其中一個是gloable variable collection,會存放所有得變數,另一個是trainable variable collection,會把標識trainable=

True的變數也存放到trainable collection中。

     

初始化引數:

Initial_value: tensor或者是python的可以轉化成tensor的物件

Trainable:如果是true,該變數也會被存放到TRAINABLE_VARIABLES的collection,如果是false,會只存放在GLOBAL_VARIABLES的collection中

Collection:指定collection,新變數會被放到該collection中

Validate_shape:如果是false,變數的維度可以是未知的,但如果是true,變數的維度必須被指定

Caching_device:可選項,配置該變數快取的裝置

Name:可選項,變數的名字,預設是Variable

Variable_def: 與protocol buffer有關(todo

Dtype: 如果設定該選項Initial_value會被設定成該型別,如果Initial_value本身就是tensor型別就保持不變,如果不是會呼叫convert_to_tensor介面

Expected_shape:如果設定該選項變數會被設定成相應的shape

Import_scope:名字的有效區間,只在從protocol buffer中初始化變數時會用到

Constraint:設定在optimizer更新該變數後會觸發的介面

 

API功能概述:

  1) tf.Variable()介面,在python環境中建立一個variable

  2) __init__()是Variable物件的初始化函式,使用Variable建立物件時會預設執行__init__()函式,在該函式中主要根據引數的傳入選擇以何種方式建立variable:從protocol buffer和從引數建立,會分別呼叫_init_from_proto()和_init_from_args

3) context.executing_eagerly()因為該版本Variable不支援eager exection mode,只支援graph mode,所以需要檢測上下文環境是否在eager環境下,如果在直接返回
4)_init_from_args()該部分只介紹從引數建立variable,該介面會接收_init_全部的引數,來完成初始化工作,還包括對引數的解析和型別檢查
5)convert_to_tensor()該介面主要是把initial_value引數轉化成tensor格式,在tensorflow中資料的表達格式是tensor,所以需要對傳入的python型別的引數轉化
6)variable_op_v2該介面主要是建立一個variable的op
7)assign()該介面主要功能是為variable的op賦值,把已經轉化成tensor的initial_value賦值給建立的variable OP
8)add_to_collection()該介面主要是把variable加入到相應的collection中,預設是在default graph

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

上圖主要是介紹在graph中預設有兩個變數得colletion,其中一個是gloable variable collection,會存放所有得變數,另一個是trainable variable collection,會把標識trainable=True的變數也存放到trainable collection中。