方法 | 返回值類型 | 參數 | 說明 |
張量 | |||
.constant() | Tensort 張量 實例t |
value | 創建一個常量tensor |
dtype=None | 輸出類型 | ||
shape=None | 返回tensor的形狀 | ||
name='Const' | 張量名 | ||
verify_shape=False | 是否保留輸入數據的形狀且不能被更改. True若shape與輸入形狀不一致則報錯 | ||
t.device | str | 表示tensor將被產生的設備名稱 | |
t.dtype | 元素類型 | ||
t.graph | 此tensor被哪個圖所有 | ||
t.name | 張量名 | ||
t.op | 產生這個tensor作為輸出的操作 | ||
t.shape | TensorShape | tensor的形狀 | |
t.value_index | 表示這個tensor在其操作結果中的索引 | ||
t.consumers() | list | 返回消耗這個tensor的操作列表 | |
t.eval() | ndarray | feed_dict=None | 用於placeholder賦初始值{placeholder_object: value} |
session=None | 用來計算此tensor的session | ||
t.get_shape() | TensorShape | tensor的形狀 | |
t.set_shape() | None | shape | 更新tensor的形狀, verify_shape=False |
.zeros() | Tensor | (shape, dtype=tf.float32, name=None) 按shape生成一個全0 tensor | |
.zeros_like() | Tensor | (tensor, dtype=None, name=None) 按tensor的shape創建一個新全0 tensor | |
.ones() .ones_like() | Tensor | 參考上面兩個, 創建全1 tensor | |
.fill() | Tensor | (dims, value, name=None) 值全為value, 形狀為dims的tensor | |
.linspace() | 1DTensor | 創建包含num個元素, 且步長固定的tensor | |
start | 起始值(包含) | ||
stop | 結束值(包含) | ||
num | 步長 = (stop - start) / (num-1) | ||
name=None | 張量名 | ||
.range() | 1DTensor | (start, limit, delta=1, name='range') 創建范圍為[start, limit)步長為delta的tensor | |
.placeholder() 占位符(feed_dictation) run的時候才賦初始值 |
Tensor | dtype | 數據類型, 必須制定, 推薦float32(或1) |
shape=None | 指定返回張量的形狀, None表示任意形狀, 某一維為None則表示次維不做限制 | ||
name=None | 張量名 | ||
.nn.embedding_ lookup() |
Tensor | params | 多維數據, |
ids | 多維數據, 值為params的索引, 返回params的對應值 | ||
partition_strategy='mod' | |||
name=None | 張量名 | ||
validate_indices=True | |||
max_norm=None | |||
.layers.dense() 全連接層 |
Tensor | ||
inputs | 二維tensor | ||
units | 輸出空間的維度(該層神經單元節點數) | ||
activation及其以后參數同tf.layers.conv1d | |||
變量 | |||
.Variable() | Variable 變量 實例v |
initial_value | Tensor or Tensor_like. 變量的初始化值. 必須指定shape, 除非validate_shape=False |
trainable=True | 是否將該變量添加到圖形集合`GraphKeys.TRAINABLE_VARIABLES` | ||
collections=None | 圖表集合鍵的列表。新的變量被添加到這些集合中。默認為`[GraphKeys.GLOBAL_VARIABLES]` | ||
validate_shape=True | 是否允許變量初始化為未知形狀的值 | ||
caching_device=None | 描述設備的字符串, 表示哪個設備用來讀取緩存. 默認是device | ||
name=None | 變量名 | ||
variable_def=None | |||
dtype=None | 指定數據類型 | ||
expected_shape=None | TensorShape類型. 要是設置了, 那么初始的值會是這種形狀 | ||
import_scope=None | |||
v.device | 設備名稱 | ||
v.dtype | 數據類型 | ||
v.graph | 存放變量的圖 | ||
v.initial_value | Tensor | 變量的初始值 | |
v.initializer | 變量的初始化器 | ||
v.name | 變量名 | ||
v.op | 產生這個variable作為輸出的操作 | ||
v.assign() | Variable | value | 為變量指定一個新值(形狀相同) |
use_locking=False | |||
v.assign_add() | Variable | delta, use_locking | 為這個變量加上一個值(形狀相同) |
v.assign_sub() | Variable | delta, use_locking | 為這個變量減去一個值(形狀相同) |
v.count_up_to() | Variable | limit | 上限值. 當Op運行時, 它試圖將變量+1, 如果增加變量使其超過限制, 將會引發異常 |
v.eval() | session=None | 在一個session里計算並返回變量值 | |
v.get_shape() | 返回變量的形狀 | ||
v.initialized_value() | Tensor | 返回已經初始化變量的值 | |
v.load() | Variable | value | 新的變量值. 把新值載入到變量里 |
session=None | 用來估算這個變量的Session | ||
v.read_value() | Tensor | 返回這個變量的值 | |
v.scatter_sub() | sparse_delta | ||
use_locking=False | |||
v.set_shape() | Variable | shape | 改變變量形狀 |
.get_variable() | Variable | name | 新的或現有變量名(可用於變量復用) |
shape=None | 新變量或現有變量的形狀 | ||
dtype=None | 新變量或現有變量的類型 | ||
initializer=None | 變量的初始值設定項 | ||
regularizer=None | |||
trainable=True | 是否將變量添加到圖形集合 | ||
collections=None | 圖形集合鍵列表 | ||
caching_device=None | |||
partitioner=None | |||
validate_shape=True | 是否允許變量初始化為未知形狀的值 | ||
use_resource=None | |||
custom_getter=None | |||
將value賦給ref來更新ref | |||
.assign() | Variable | ref | Veriable |
value | 跟ref同類型的Tensor | ||
validate_shape=None | True: value需和ref形狀相同(默認) | ||
False: ref將對value的形狀進行引用 | |||
use_locking=None | |||
name=None | 操作的名稱 | ||
.global_variables() | 返回全局變量 | ||
.local_variables() | 返回局部變量 | ||
.variables_ initializer() | var_list | 待初始化變量列表 | |
name='init' | 操作的名稱 | ||
.global_variables_ initializer() | Op | (替換tf.initialize_all_variables()的新方法)返回一個初始化所有全局變量的操作. 類似variables_initializers(global_variables()) | |
.local_variables_ initializer() | Op | 返回一個初始化所有局部變量的操作 | |
Graph(圖) | |||
.get_default_graph() | 返回默認圖 | ||
.Graph() | 實例g | 創建一個圖 | |
g.building_function | |||
g.finalized | 若此圖被終止了則返回True | ||
g.graph_def_versions | |||
g.seed | 此圖的圖層隨機種子 | ||
g.version | |||
g.add_to_collection() | |||
name | |||
value | |||
g.as_default() | with...: | 將此圖設為默認, 其包含的張量將在此圖中 | |
g.device() | matmul_on_gpu | 參見tf.device | |
g.finalize() | 結束這個Graph, 使得它只讀 | ||
g.get_all_collection_ key() | list | 返回Graph中的collection列表 | |
g.get_operation_ by_name() | name | 根據操作名返回操作 | |
g.get_operations() | list | 返回圖中操作列表 | |
g.get_tensor_by_ name() | Tensor | name | 根據張量名返回tensor |
g.is_feedable() | bool | tensor | 判斷tensor能否被feed |
g.is_fetchable() | bool | tensor_or_op | 判斷tensor或op能否被取到 |
g.name_scope() | 參考tf.name_scope() | ||
Session | |||
.InteractiveSession() | 實例s | 創建一個新的session並設為默認 | |
target='' | 連接執行引擎, 默認in-process | ||
graph=None | 要計算的graph | ||
config=None | |||
.Session() | 實例s | 創建一個新的session, 包含了操作對象執行的環境 | |
target='' | 連接執行引擎, 默認in-process | ||
graph=None | 要計算的graph | ||
config=None | |||
s.graph | "投放"到session中的圖 | ||
s.graph_def | 圖的描述 | ||
s.sess_str | |||
s.run() | 運行操作計算tensor | ||
fetches | 圖中的一個元素, 或元素列表. 或一個字典, 返回也將是字典, key不變, 值變為運算后的值 | ||
feed_dict=None | 用於placeholder賦初始值 | ||
options=None | |||
run_metadata=None | |||
s.close() | 關閉這個session | ||
s.as_default() | with...: | 將此對象設為默認的session | |
優化器Optimizer(tf.train) | |||
.Optimizer() | 優化器類的基類(基本不用) | ||
.GradientDescent Optimizer() | Op | 創建一個梯度下降算法的優化器 | |
learning_rate | 要是用的學習率 | ||
use_locking=False | |||
name='GradientDescent' | 操作的名稱 | ||
Op.compute_ gradients() | |||
loss | 待減小的值 | ||
var_list=None | 默認GraphKey.TRAINABLE_VARIABLES | ||
gate_gradients= GATE_OP | |||
aggregation_method=N | |||
colocate_gradients_with_ ops=False | |||
grad_loss=None | |||
.AdadeltaOptimizer | 實現了Adadelta算法的優化器, 可以算是Adagrad算法的改進版 | ||
learning_rate=0.001 | 學習率 | ||
rho=0.95 | 衰減率 | ||
epsilon=1e-08 | |||
use_locking=False | |||
name='Adadelta' | 操作的名稱 | ||
.AdagradOptimizer | 實現了Adagrad算法的優化器 | ||
learning_rate | 學習率 | ||
initial_accumulator_ value=0.1 | |||
use_locking=False | |||
name='Adagrad' | 操作的名稱 | ||
.Momentum Optimizer() | |||
.AdamOptimizer() | |||
數學函數(Math)點擊跳轉到官方API(有牆) | |||
.argmax() | Tensor | 返回指定維度最大值的位置 | |
input | Tensor | ||
axis=None | 默認維度0 | ||
name=None | 操作名稱 | ||
output_type=tf.int64 | tf.int32或tf.int64 | ||
.argmin() | Tensor | 同.argmax但作用相反 | |
.matmul() | Tensor | 計算矩陣的積 | |
a,b | 需要計算的兩個矩陣 | ||
transpose_a=False | 是否將a計算前進行轉置 | ||
transpose_b=False | 是否將b計算前進行轉置 | ||
adjoint_a=False | 是否將a計算前進行共軛轉置 | ||
adjoint_b=False | 是否將b計算前進行共軛轉置 | ||
a_is_sparse=Fasle | a是否是稀疏矩陣 | ||
b_is_sparse=Fasle | b是否是稀疏矩陣 | ||
隨機值 | |||
.random_normal() | Tensor | 返回一個指定形狀,被隨機正態分布值填充的tensor | |
shape | 指定返回張量的形狀 | ||
mean=0.0 | 正態分布的均值 | ||
stddev=1.0 | 正態分布的標准差 | ||
dtype=tf.float32 | 輸出類型: float32, float64, int32或int64 | ||
seed=None | 隨機數種子 | ||
name=None | 張量名 | ||
.truncated_normal() | Tensor | 返回一個指定形狀,被截斷正態分布(truncated normal distribution)值填充的tensor(參數同上) | |
.random_unifrom() | Tensor |
服從均值分布的隨機數, 區間為[minval, maxval) | |
shape | 指定返回張量的形狀 | ||
minval=0 | 隨機值范圍的下界(默認[0, 1)) | ||
maxval=None | 隨機值范圍的上界(int則必須指定此值) | ||
dtype, seed, name | 同上 | ||
.random_shuffle() | Tensor | 在第一個維度隨機打亂順序(可在隨機梯度下降的時候用) | |
value | 待打亂的tensor | ||
seed, name | 同上 | ||
形狀相關操作 | |||
.shape() | Tensor | 返回輸入Tensor的形狀 | |
input | 輸入的Tensor | ||
name=None | 操作的名稱 | ||
out_type=tf.int32 | 輸出數據的數據類型 | ||
.shape_n() | |||
.size() | 返回輸入Tensor的元素數量(參數同tf.shape) | ||
.rank() | (input, name=None)返回tensor的維度數 | ||
.reshape() | Tensor | 改變一個tensor的形狀 | |
tensor | 輸入tensor | ||
shape | tensor形狀(某個分量可以是-1, 將將自動計算此值) | ||
name=None | 操作的名稱 | ||
.squeeze() | |||
.expand_dims() | |||
.reduce_max() 參考np.max |
Tensor | input_tensor | 傳入一個tensor或可轉換為tensor的數據 |
axis=None(原reduction_indices) | 選擇操作的維度, 默認操作全部數據 | ||
keep_dims=False | 是否保留原維度, 否則計算后維度降低 | ||
name=None | 張量名 | ||
.reduce_* | Tensor | 參考.reduce_max參數 | 參考np.* |
基本神經網絡組件 | |||
激活函數(輸入輸出維度一致) | |||
.nn.relu() | Tensor | 計算修正線性單元 | |
features | tensor | ||
name=None | 操作的名稱 | ||
.nn.relu6() | |||
.nn.crelu() | |||
.nn.elu() | |||
.nn.softsign() | |||
.nn.dropout() | Tensor | 隨機丟棄一部分神經元 (有助於防止過度擬合) | |
inputs | Tensor | ||
rate=0.5 | 丟包率 | ||
noise_shape=None | |||
seed=None | 隨機種子 | ||
training=False | |||
name=None | 操作名稱 | ||
.nn.bias_add() | |||
.sigmoid() | |||
.tanh() | |||
分類 | |||
.nn.sigmoid_cross_ entropy_with_logits() | |||
.nn.softmax() | Tensor | softmax = tf.exp(logits) / tf.reduce_sum(tf.exp(logits), dim) | |
logits | Tensor | ||
dim=-1 | 運算的維度, 默認最后一個維度 | ||
name=None | 操作名稱 | ||
.nn.log_softmax() | Tensor | logsoftmax = logits - log(reduce_sum(exp(logits), dim)) | |
參數同.nn.softmax() | |||
.nn.softmax_cross_ entropy_with_logits() | Tensor | 計算交叉熵(禁止使用位置參數)(損失函數, 越小模型越優) | |
labels=None | 有效概率分布 | ||
logits=None | 估計概率分布 | ||
dim=-1 | 維度, 默認最后一個維度 | ||
name=None | 操作名稱 | ||
.nn.sparse_softmax_ cross_entropy_with_ logits() | |||
.nn.weighted_cross_ entropy_with_logits() | |||
各種卷積網絡 | |||
基本卷積操作 | |||
.layers.conv1d() |
Tensor | inputs | 張量輸入 |
filters | 整數, 輸出空間的維數(即, 卷積核的數量) | ||
kernel_size | 一個整數或一個整數的元組/列表, 指定1D卷積窗的長度 | ||
strides=1 | 一個整數或一個整數的元組/列表, 指定卷積的步幅長度 | ||
padding='valid' | 'valid'或'same'不區分大小寫 | ||
data_format= 'channels_last' | |||
dilation_rate=1 | |||
activation=None | 激活函數, 默認線性激活 | ||
ues_bias=True | 是否使用偏置 | ||
kernel_initializer=None | 卷積核初始化 | ||
bias_initializer= tf.zeros_initializer() | 偏置初始化, 默認初始化為0 | ||
kernel_regularizer=None | 卷積核化的正則化 | ||
bias_regularizer=None | 偏置項的正則化 | ||
activity_regularizer=None | 輸出的正則化函數 | ||
kernel_constraint=None | |||
bias_constraint=None | |||
trainable=True | 該層的參數是否參與訓練, True則變量加入到圖集合中 | ||
name=None | 該層的名稱 | ||
reuse=None | 是否重復使用參數 | ||
.layers.conv2d() |
Tensor | 二維卷積 | |
參數同.layers.conv1d, 只列出不同 | |||
kernel_size | 一個整數或2個整數的元組/列表, 指定2D卷積窗口的高度和寬度. 一個整數表示高=寬 | ||
strides | 一個整數或2個整數的元組/列表, 指定沿高度和寬度的步幅長度 | ||
dilation_rate | |||
.nn.conv2d() | Tensor | 二維卷積 | |
input | 輸入 | ||
filter | [濾波器高,濾波器寬,深度(同輸入),濾波器個數(輸出的深度 )] | ||
strides | 滑動步長, 一般為[1, x_strides, y_strides, 1] | ||
padding | 'SAME'會有0填充, 使步長為1時保持輸入輸出尺寸不變, 而'VALID'則采取丟棄 | ||
use_cudnn_on_gpu=N | |||
data_format=None | 指明輸入數據和輸出數據的格式. 'NHWC': 數據存儲格式為[batch, in_height, in_width, in_channels]; 'NCHW': 數據存儲格式為[batch, in_channels, in_height, in_width] | ||
name=None | 操作的名稱 | ||
.nn.atrous_conv2d() | Tensor | 空洞卷積(沒有stride參數, 因為被固定為了1) | |
value | 4DTensor, 需要'NHWC'格式 | ||
filters | [濾波器高,濾波器寬,深度(同輸入),濾波器個數(輸出的深度 )] | ||
rate | 插入(rate-1)數量的'0' | ||
padding | 'VALID'或'SAME'. 'VALID'返回:[batch, height-2*(filter_width-1), width-2*(filter_height-1), out_channels]的Tensor; 'SAME'返回:[batch, height, width, out_channels]的Tensore | ||
name=None | 操作的名稱 | ||
池化操作(Pooling) | |||
.nn.avg_pool() | Tensor | 平均 | |
value | [batch, height, width, channels] |
||
ksize | 濾波器形狀, 一般二維圖像為[1,高,寬,1] |
||
strides | 步長, 一般為[1, x_strides, y_strides, 1] | ||
padding | 'VALID'或'SAME' | ||
date_format='NHWC' | 'NHWC'或'NCHW' | ||
name=None | 操作名 | ||
.nn.max_pool() | |||
.nn.max_pool_with_ argmax() | |||
.nn.avg_pool3d() | |||
.nn.max_pool3d() | |||
.nn.fractional_avg_ pool() | |||
.nn.fractional_max_ pool() | |||
.nn.pool() | |||
.device() | with...: | '/cpu:0' | 指定運算設備為CPU, 即使多個CPU也不區分. |
'/gpu:n' | 多個GPU的名稱是不同的, 第一個為'/gpu:0' | ||
.name_scope() | with...: | name | 在其下使用Variable, 變量名(V_n)前會被加上'name/...'且相同V_n會自動添加后綴加以區分, 使用get_variable, V_n不會變化, 且出現相同V_n會報錯 |
default_name=None | 如果`name`參數是`None`,則使用默認名稱 | ||
values=None | |||
.variable_scope() | with...as sc: |
name_or_scope | Variable以及get_variable變量名(V_n)前面都會被加上'name/...'但只有Variable的V_n會自動加后綴區分, 而在get_variable重復V_n前面加上sc.reuse_variables()可實現變量復用(指向同一變量)不加則報錯 |
default_name=None | 如果`name_or_scope`參數是`None`,則使用默認名稱 | ||
values=None | |||
initializer=None | 此范圍內變量的默認初始值設定項 | ||
regularizer=None | 此范圍內的變量的默認regularizer | ||
caching_device=None | 此范圍內的變量的默認緩存設備 | ||
partitioner=None | 此范圍內變量的默認分區程序 | ||
custom_getter=None | 這個范圍內的變量的默認自定義getter | ||
reuse=None | |||
dtype=None | 在此作用域中創建的變量類型 | ||
use_resource=None | |||