tf.Graph
| 操作 | 描述 |
|---|---|
| class tf.Graph | tensorflow中的計算以圖數據流的方式表示 一個圖包含一系列表示計算單元的操作對象 以及在圖中流動的數據單元以tensor對象表現 |
| tf.Graph.__init__() | 建立一個空圖 |
| tf.Graph.as_default() | 一個將某圖設置為默認圖,並返回一個上下文管理器 如果不顯式添加一個默認圖,系統會自動設置一個全局的默認圖。 所設置的默認圖,在模塊范圍內所定義的節點都將默認加入默認圖中 |
| tf.Graph.as_graph_def (from_version=None, add_shapes=False) |
返回一個圖的序列化的GraphDef表示 序列化的GraphDef可以導入至另一個圖中(使用 import_graph_def()) 或者使用C++ Session API |
| tf.Graph.finalize() | 完成圖的構建,即將其設置為只讀模式 |
| tf.Graph.finalized | 返回True,如果圖被完成 |
| tf.Graph.control_dependencies(control_inputs) | 定義一個控制依賴,並返回一個上下文管理器 with g.control_dependencies([a, b, c]): # `d` 和 `e` 將在 `a`, `b`, 和`c`執行完之后運行. d = … e = … |
| tf.Graph.device(device_name_or_function) | 定義運行圖所使用的設備,並返回一個上下文管理器with g.device('/gpu:0'): ...with g.device('/cpu:0'): ... |
| tf.Graph.name_scope(name) | 為節點創建層次化的名稱,並返回一個上下文管理器 |
| tf.Graph.add_to_collection(name, value) | 將value以name的名稱存儲在收集器(collection)中 |
| tf.Graph.get_collection(name, scope=None) | 根據name返回一個收集器中所收集的值的列表 |
| tf.Graph.as_graph_element (obj, allow_tensor=True, allow_operation=True) |
返回一個圖中與obj相關聯的對象,為一個操作節點或者tensor數據 |
| tf.Graph.get_operation_by_name(name) | 根據名稱返回操作節點 |
| tf.Graph.get_tensor_by_name(name) | 根據名稱返回tensor數據 |
| tf.Graph.get_operations() | 返回圖中的操作節點列表 |
| tf.Graph.gradient_override_map(op_type_map) | 用於覆蓋梯度函數的上下文管理器 |
神經網絡(Neural Network)
- 激活函數(Activation Functions)
| 操作 | 描述 |
|---|---|
| tf.nn.relu(features, name=None) | 整流函數:max(features, 0) |
| tf.nn.relu6(features, name=None) | 以6為閾值的整流函數:min(max(features, 0), 6) |
| tf.nn.elu(features, name=None) | elu函數,exp(features) - 1 if < 0,否則features Exponential Linear Units (ELUs) |
| tf.nn.softplus(features, name=None) | 計算softplus:log(exp(features) + 1) |
| tf.nn.dropout(x, keep_prob, noise_shape=None, seed=None, name=None) |
計算dropout,keep_prob為keep概率 noise_shape為噪聲的shape |
| tf.nn.bias_add(value, bias, data_format=None, name=None) | 對value加一偏置量 此函數為tf.add的特殊情況,bias僅為一維, 函數通過廣播機制進行與value求和, 數據格式可以與value不同,返回為與value相同格式 |
| tf.sigmoid(x, name=None) | y = 1 / (1 + exp(-x)) |
| tf.tanh(x, name=None) | 雙曲線切線激活函數 |
- 卷積函數(Convolution)
| 操作 | 描述 |
|---|---|
| tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, data_format=None, name=None) |
在給定的4D input與 filter下計算2D卷積 輸入shape為 [batch, height, width, in_channels] |
| tf.nn.conv3d(input, filter, strides, padding, name=None) | 在給定的5D input與 filter下計算3D卷積 輸入shape為[batch, in_depth, in_height, in_width, in_channels] |
- 池化函數(Pooling)
| 操作 | 描述 |
|---|---|
| tf.nn.avg_pool(value, ksize, strides, padding, data_format=’NHWC’, name=None) |
平均方式池化 |
| tf.nn.max_pool(value, ksize, strides, padding, data_format=’NHWC’, name=None) |
最大值方法池化 |
| tf.nn.max_pool_with_argmax(input, ksize, strides, padding, Targmax=None, name=None) |
返回一個二維元組(output,argmax),最大值pooling,返回最大值及其相應的索引 |
| tf.nn.avg_pool3d(input, ksize, strides, padding, name=None) |
3D平均值pooling |
| tf.nn.max_pool3d(input, ksize, strides, padding, name=None) |
3D最大值pooling |
- 數據標准化(Normalization)
| 操作 | 描述 |
|---|---|
| tf.nn.l2_normalize(x, dim, epsilon=1e-12, name=None) | 對維度dim進行L2范式標准化 output = x / sqrt(max(sum(x**2), epsilon)) |
| tf.nn.sufficient_statistics(x, axes, shift=None, keep_dims=False, name=None) |
計算與均值和方差有關的完全統計量 返回4維元組,*元素個數,*元素總和,*元素的平方和,*shift結果 參見算法介紹 |
| tf.nn.normalize_moments(counts, mean_ss, variance_ss, shift, name=None) | 基於完全統計量計算均值和方差 |
| tf.nn.moments(x, axes, shift=None, name=None, keep_dims=False) |
直接計算均值與方差 |
- 損失函數(Losses)
| 操作 | 描述 |
|---|---|
| tf.nn.l2_loss(t, name=None) | output = sum(t ** 2) / 2 |
- 分類函數(Classification)
| 操作 | 描述 |
|---|---|
| tf.nn.sigmoid_cross_entropy_with_logits (logits, targets, name=None)* |
計算輸入logits, targets的交叉熵 |
| tf.nn.softmax(logits, name=None) | 計算softmax softmax[i, j] = exp(logits[i, j]) / sum_j(exp(logits[i, j])) |
| tf.nn.log_softmax(logits, name=None) | logsoftmax[i, j] = logits[i, j] - log(sum(exp(logits[i]))) |
| tf.nn.softmax_cross_entropy_with_logits (logits, labels, name=None) |
計算logits和labels的softmax交叉熵 logits, labels必須為相同的shape與數據類型 |
| tf.nn.sparse_softmax_cross_entropy_with_logits (logits, labels, name=None) |
計算logits和labels的softmax交叉熵 |
| tf.nn.weighted_cross_entropy_with_logits (logits, targets, pos_weight, name=None) |
與sigmoid_cross_entropy_with_logits()相似, 但給正向樣本損失加了權重pos_weight |
- 符號嵌入(Embeddings)
| 操作 | 描述 |
|---|---|
| tf.nn.embedding_lookup (params, ids, partition_strategy=’mod’, name=None, validate_indices=True) |
根據索引ids查詢embedding列表params中的tensor值 如果len(params) > 1,id將會安照partition_strategy策略進行分割 1、如果partition_strategy為”mod”, id所分配到的位置為p = id % len(params) 比如有13個ids,分為5個位置,那么分配方案為: [[0, 5, 10], [1, 6, 11], [2, 7, 12], [3, 8], [4, 9]] 2、如果partition_strategy為”div”,那么分配方案為: [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10], [11, 12]] |
| tf.nn.embedding_lookup_sparse(params, sp_ids, sp_weights, partition_strategy=’mod’, name=None, combiner=’mean’) |
對給定的ids和權重查詢embedding 1、sp_ids為一個N x M的稀疏tensor, N為batch大小,M為任意,數據類型int64 2、sp_weights的shape與sp_ids的稀疏tensor權重, 浮點類型,若為None,則權重為全’1’ |
- 循環神經網絡(Recurrent Neural Networks)
| 操作 | 描述 |
|---|---|
| tf.nn.rnn(cell, inputs, initial_state=None, dtype=None, sequence_length=None, scope=None) |
基於RNNCell類的實例cell建立循環神經網絡 |
| tf.nn.dynamic_rnn(cell, inputs, sequence_length=None, initial_state=None, dtype=None, parallel_iterations=None, swap_memory=False, time_major=False, scope=None) |
基於RNNCell類的實例cell建立動態循環神經網絡 與一般rnn不同的是,該函數會根據輸入動態展開 返回(outputs,state) |
| tf.nn.state_saving_rnn(cell, inputs, state_saver, state_name, sequence_length=None, scope=None) |
可儲存調試狀態的RNN網絡 |
| tf.nn.bidirectional_rnn(cell_fw, cell_bw, inputs, initial_state_fw=None, initial_state_bw=None, dtype=None, sequence_length=None, scope=None) |
雙向RNN, 返回一個3元組tuple (outputs, output_state_fw, output_state_bw) |
— tf.nn.rnn簡要介紹—
cell: 一個RNNCell實例
inputs: 一個shape為[batch_size, input_size]的tensor
initial_state: 為RNN的state設定初值,可選
sequence_length:制定輸入的每一個序列的長度,size為[batch_size],值范圍為[0, T)的int型數據
其中T為輸入數據序列的長度
@
@針對輸入batch中序列長度不同,所設置的動態計算機制
@對於在時間t,和batch的b行,有
(output, state)(b, t) = ? (zeros(cell.output_size), states(b, sequence_length(b) - 1)) : cell(input(b, t), state(b, t - 1))
- 求值網絡(Evaluation)
| 操作 | 描述 |
|---|---|
| tf.nn.top_k(input, k=1, sorted=True, name=None) | 返回前k大的值及其對應的索引 |
| tf.nn.in_top_k(predictions, targets, k, name=None) | 返回判斷是否targets索引的predictions相應的值 是否在在predictions前k個位置中, 返回數據類型為bool類型,len與predictions同 |
對於有巨大量的多分類與多標簽模型,如果使用全連接softmax將會占用大量的時間與空間資源,所以采用候選采樣方法僅使用一小部分類別與標簽作為監督以加速訓練。
| 操作 | 描述 |
|---|---|
| Sampled Loss Functions | |
| tf.nn.nce_loss(weights, biases, inputs, labels, num_sampled, num_classes, num_true=1, sampled_values=None, remove_accidental_hits=False, partition_strategy=’mod’, name=’nce_loss’) |
返回noise-contrastive的訓練損失結果 |
| tf.nn.sampled_softmax_loss(weights, biases, inputs, labels, num_sampled, num_classes, num_true=1, sampled_values=None, remove_accidental_hits=True, partition_strategy=’mod’, name=’sampled_softmax_loss’) |
返回sampled softmax的訓練損失 參考- Jean et al., 2014第3部分 |
| Candidate Samplers | |
| tf.nn.uniform_candidate_sampler(true_classes, num_true, num_sampled, unique, range_max, seed=None, name=None) |
通過均勻分布的采樣集合 返回三元tuple 1、sampled_candidates 候選集合。 2、期望的true_classes個數,為浮點值 3、期望的sampled_candidates個數,為浮點值 |
| tf.nn.log_uniform_candidate_sampler(true_classes, num_true, num_sampled, unique, range_max, seed=None, name=None) |
通過log均勻分布的采樣集合,返回三元tuple |
| tf.nn.learned_unigram_candidate_sampler (true_classes, num_true, num_sampled, unique, range_max, seed=None, name=None) |
根據在訓練過程中學習到的分布狀況進行采樣 返回三元tuple |
| tf.nn.fixed_unigram_candidate_sampler(true_classes, num_true, num_sampled, unique, range_max, vocab_file=”, distortion=1.0, num_reserved_ids=0, num_shards=1, shard=0, unigrams=(), seed=None, name=None) |
基於所提供的基本分布進行采樣 |
保存與恢復變量
| 操作 | 描述 |
|---|---|
| 類tf.train.Saver(Saving and Restoring Variables) | |
| tf.train.Saver.__init__(var_list=None, reshape=False, sharded=False, max_to_keep=5, keep_checkpoint_every_n_hours=10000.0, name=None, restore_sequentially=False, saver_def=None, builder=None) |
創建一個存儲器Saver var_list定義需要存儲和恢復的變量 |
| tf.train.Saver.save(sess, save_path, global_step=None, latest_filename=None, meta_graph_suffix=’meta’, write_meta_graph=True) |
保存變量 |
| tf.train.Saver.restore(sess, save_path) | 恢復變量 |
| tf.train.Saver.last_checkpoints | 列出最近未刪除的checkpoint 文件名 |
| tf.train.Saver.set_last_checkpoints(last_checkpoints) | 設置checkpoint文件名列表 |
| tf.train.Saver.set_last_checkpoints_with_time(last_checkpoints_with_time) | 設置checkpoint文件名列表和時間戳 |
