tensorflow原始碼分析(1)

2021-09-02 10:18:35 字數 2136 閱讀 1404

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中。

linux 原始碼安裝 tensorflow C

系統 ubuntu16.04 tensorflow1.4 cpu版本 g 5.4.0 bazel 0.5.4 參考 git clone cd tensorflow git checkout r1.4 切換到所要編譯的版本分支2,安裝bazel bazel的版本太高太低都會有問題,可以檢視tensor...

tensorflow原始碼閱讀device

tensorflow core commeon runtime device factory.h define register local device factory device type,device factory,internal register local device factor...

tensorflow 原始碼學習 一

作為主流的機器學習框架,tensorflow的提供的介面變化很多,專案 也比較複雜,為了讓自己使用起來更得心應手,所以覺得還是有必要學習一下原始碼。個人覺得提公升程式設計水平的兩種最好方式,乙個是自己造輪子,再乙個就是閱讀原始碼。1.版本 2.整體專案結構 這並不是tensorflow完整的專案結構...