1. 程式人生 > >TensorFlow 學習(七) — 常用函式 api、tf.nn、tf.keras

TensorFlow 學習(七) — 常用函式 api、tf.nn、tf.keras

0. 四則運算

  • 平方:tf.square(),開方:tf.sqrt()
  • tf.add()、tf.sub()、tf.mul()、tf.div()、tf.mod()、tf.abs()、tf.neg()

1. 簡單數理統計

RnR\mathbb R^n\rightarrow \mathbb R(從向量到標量),意味著一種約簡(reduce)。

  • 均值:tf.reduce_mean,求和:tf.reduce_sum

    • stddev = tf.sqrt(tf.reduce_mean(tf.square(var - mean)))
    >> tf.InteractiveSession()
    >> x = tf.constant(np.ones(6).reshape(2, 3))
    >> x.eval()
    array([[1., 1., 1.],
           [1., 1., 1.]])
    
    >> tf.reduce_sum(x).eval()
    6.0
    >> tf.reduce_sum(x, 0).eval()
    array([2., 2., 2.])
    >> tf.reduce_sum(x, 1).eval()
    array([3., 3.])
    >>  tf.reduce_sum(x, 1, keepdims=True).eval()
    array([[3.],
           [3.]])
    
  • 最大最小(極值):tf.reduce_max/tf.reduce_min

2. 初始化子(initializer)

  • tf.zeros_initializer()
  • tf.ones_initializer()
  • tf.constant_initializer()
    • tf.constant_initializer(0.) ⇒ float
    • tf.constant_initializer(0, dtype=tf.int64)
  • tf.random_normal_initializer()

與 tf.global_variable_initializer() 所不同的是,以上這些返回的是物件(<tensorflow.python.ops.init_ops.Constant/RandomNormal/Ones/Zeros at 0xXXX>

),而 tf.global_variable_initializer() 返回的則是一種 tf.Operation(<tf.Operation 'init_N' type=NoOp>),

3. 矩陣向量運算

  • tf.diag、tf.transpose、tf.matmul、
  • tf.matrix_determinant(方陣行列式)、tf.matrix_inverse(方陣求逆)

4. tf.nn

  • activation

    • tf.nn.relu
    • tf.nn.softmax:多分類的輸出層
  • softmax + cross entropy:

    tf.nn.softmax_cross_entropy_with_logits(logits, labels) ⇒ tf.reduce_mean()
    

5. 優化、損失與評價

  • optimizer:
    • tf.train.AdamOptimizer()
  • loss:
    • ‘sparse_categorical_crossentropy’
  • metrics
    • ‘accuracy’

6. tf.keras

  • 以 mnist 的 60002828 的資料集為例:

    • 搭建模型的拓撲結構
    model = keras.Sequential([
    	keras.layers.Flatten(input_shape=(28, 28)),
    	keras.layers.Dense(128, activation=tf.nn.relu),
    	keras.layers.Dense(10, activation=tf.nn.softmax)
    ])
    

    keras.layers.Flatten(input_shape=(28, 28))將影象由二維拉伸為1維;

    • 模型編譯:
    model.compile(optimizer=tf.train.AdamOptimizer(),
    	loss='sparse_categorical_crossentropy',
    	metrics=['accuracy'])
    
    • 模型訓練(此時傳入資料)
    model.fit(X_train, y_train, epochs=5)
    
    • 模型評估:
    test_loss, test_accuracy = model.evaluate(X_test, y_test)
    

1. 基本

  • tf.clip_by_value() 截斷,常和對數函式結合使用

    # 計算交叉熵
    crose_ent = -tf.reduce_mean(tf.log(y_*tf.clip_by_value(y, 1e-10, 1.)))
    
    a = tf.reshape(tf.range(6, dtype=tf.float32), [2, 3])
    tf.clip_by_value(a, 2.5, 4.5)           # 將值限定在 2.5 和 4.5 之間
    array([[ 2.5,  2.5,  2.5],
           [ 3. ,  4. ,  4.5]], dtype=float32)
    

2. 條件分支:tf 下的三目運算子

f(x,y)={a(xy),x&gt;ya(yx),xy f(x,y)=\left\{ \begin{array}{l} a(x-y), &amp; x&gt;y\\ a(y-x),&amp;x\leq y \end{array} \right.

tf.select(tf.greater(v1, v2), a*(v1-v2), a*(v2-v1))

當然上式也可化為:f(x,y)=axyf(x,y)=a|x-y|

3. map_fn

  • tf.map_fn(fn, elems):接受一個函式物件,然後用該函式物件對集合(elems)中的每一個元素分別處理,

    def preprocessing_image(image, training):
    	image = ...
    	return image
    
    def preprocessing_images(images, training):
    	images = tf.map_fn(lambda image: preprocessing_image(image, training), images)
    	return images
    

相關推薦

TensorFlow 學習常用函式 apitf.nntf.keras

0. 四則運算 平方:tf.square(),開方:tf.sqrt() tf.add()、tf.sub()、tf.mul()、tf.div()、tf.mod()、tf.abs()、tf.neg()

HM編碼器程式碼閱讀(32)——幀間預測之AMVP/Merge模式encodeResAndCalcRdInterCU函式:殘差計算變換量化

encodeResAndCalcRdInterCU 原理和細節     經過運動估計、運動補償,我們得到了MV以及參考塊,那麼接下來是計算殘差、計算MVD,然後對係數進行變換、量化。     encodeResAndCalcRdInterCU函式就是幀間預測之後,專門用

tensorflow學習6:CNN必備函式tf.nn.conv2d和tf.nn.max_pool

一、卷積函式tf.nn.conv2d tf.nn.conv2d( input, filter, strides, padding, use_cudnn_on_gpu=None, name=None) 除去name引數用以指定該操作的name,與方法有關的一共五個引數: 第一個引數in

tensorflow學習4:損失函式+優化方法

一、損失函式 提起損失函式,大概最常用的就是交叉熵和均方誤差了。 1.交叉熵損失函式:針對分類問題 假設某個樣例的正確答案是(1,0,0),預測值是[0.5,0.4,0.1] 那麼其交叉熵為H((1,0,0),(0.5,0.4,0.1))=-(1log0.5+0log0.4+0*log

Go學習日記 map函式

基礎語法 //map[k]v func mapData() { //一般空的map用make建立 m1 := make(map[int]int) // == empty map var m2 map[string]int //return nil //建立空的map m3 := m

Python 3 學習—— 常用內建函式網上收集整理

文章目錄 輸入輸出 數學運算 型別轉換 序列操作 函式操作 Python 3 所有內建函式 輸入輸出 print(*objects, sep=' ', end='\n', file=sys.stdout,

對抗神經網路學習——SRGAN生成超解析度影像(tensorflow實現)

一、背景 SRGAN(Super-Resolution Generative Adversarial Network)即超解析度GAN,是Christian Ledig等人於16年9月提出的一種對抗神經網路。利用卷積神經網路實現單影像的超解析度,其瓶頸仍在於如何恢復影象的細微紋理資訊。對於GAN

tensorflow學習10:影象處理函式

一、影象編碼處理 眾所周知,一張RGB彩色想可以看成一個三維矩陣,矩陣中的每一個數字表示了影象上不同位置,不同顏色的亮度。但是影象在儲存時不是直接記錄這些距震中的數字,而是記錄經過壓縮編碼之後的結果,因此要將一張影象還原成一個三維矩陣,需要解碼。tensorflow提供了對JPEG和PN

NumPy學習指南 學習筆記 常用函式

1.  檔案讀寫 通常情況下,資料是以檔案形式儲存的。學會讀寫檔案是深入學習Numpy的基礎。 1.1 建立單位矩陣,並存入txt檔案i2 = np.eye(2) i2 Out[84]: array([[ 1., 0.], [ 0., 1.]]) 使用s

人工智慧實踐:TensorFlow筆記學習—— 卷積神經網路基礎

大綱7.1 卷積神經網路7.2  lenet5程式碼講解目標掌握卷積神經網路的搭建方法7.1 卷積神經網路全連線 NN:每個神經元與前後相鄰層的每一個神經元都有連線關係,輸入是特徵,輸出為預測的結果。引數個數:(前層X後層+後層)  一張解析度僅僅是28x28的黑白影象,就有

機器學習基礎——sigmoid 函式的性質

θ(s)=11+e−s 值域 (0,1) 常作為神經元(neuron)內部所代表的激勵函式(activation)存在; 但對於 BP 神經網路而言,sigmoid 函式用作激勵函式要尤其慎重;

opencv學習之影象卷積運算函式filter2D()

接上篇 在其官方文件中,filter2D()函式在掩模板介紹中一筆帶過,我認為該函式應該進行詳細介紹。 對於使用掩模板矩陣(kernel)計算每個畫素值,結合函式filter2D()函式,其定義如下: CV_EXPORTS_W void filter2D(

JAVA學習:方法重載與方法重寫thiskeyword和superkeyword

格式 hello new 初始 per 而且 方法重寫 學習 方式 方法重載與方法重寫、thiskeyword和superkeyword 1、方法重載 重載可以使具有同樣名稱但不同數目和類型參數的類傳遞給方法。 註: 一是重載方法的參數列表必須與被重載的方法不同

Guice 學習常量和屬性的註入 Constant and Property Inject

-a ret roc build ann class google mes ota 1、常量註入方式 package com.guice.ConstantInjectDemo; import com.google.inject.Binder; i

Python學習

偏移量 學習 所有 ecs tables column 信息 詳細 rom 一、MySQL基礎 show databases; 查看所有數據庫 use db_name; 用那個數據庫 show tables; 查看數據庫下的所有表 decs table_name;

python學習列表/字典合並布爾型交換變量值列表轉換字符串連接和分割

for post type abcde 列表 str 根據 指定 學習 1、列表合並 a=[] b=[12,23] a.insert(0,‘sdv‘)#在指定位置增加元素 a.append(‘we‘)#增加元素 a.extend(b) #合並列表 print(a) a

機器學習—Adaboost 和 梯度提升樹GBDT

獲得 決策樹 info gin 否則 它的 均方差 但是 ont 1、Adaboost算法原理,優缺點:   理論上任何學習器都可以用於Adaboost.但一般來說,使用最廣泛的Adaboost弱學習器是決策樹和神經網絡。對於決策樹,Adaboost分類用了CART分類樹,

操作系統學習 保護機制概述

長度 發的 之間 軟件開發 軟件 內存空間 工作 尋找 超級用戶 保護機制是可靠運行多任務環境所必須的。它可以用於保護各個任務免受互相之間的幹擾。在軟件開發的任何階段都可以使用段級和頁級保護來協助尋找和檢測設計問題和錯誤。當程序對錯誤內存空間執行了一次非期望的引用,保護機制

mysql的學習-自定義函數和流程控制

returns spa 會員 返回 類型 mysq -- create decimal DELIMITER // (設置結束符 其實我也不太明白為啥要這樣 記住就行把) CREATE FUNCTION ym_date(mydate DATE) (創建函數

C++語言學習——友元

ons 封裝性 int turn 安全性 語句 機制 int() sin C++語言學習(七)——友元 一、友元簡介 1、友元簡介 面向對象編程的類的設計機制實現了數據的隱藏與封裝,類的成員變量一般定義為私有成員,成員函數一般定義為公有的,是類與外部的通信接口。在實踐中,類