tensorflow是乙個通過計算圖的形式來表述計算的程式設計系統,計算圖也叫資料流圖,可以把計算圖看做是一種有向圖,tensorflow中的每乙個節點都是計算圖上的乙個tensor, 也就是張量,而節點之間的邊描述了計算之間的依賴關係(定義時)和數學操作(運算時)。
給定兩個概率分布p和q,通過q來表示p的交叉熵為:
從上述公式可以看出交叉熵函式是不對稱的,即h(p,q)不等於h(q,p)。
交叉熵刻畫的是兩個概率分布之間的距離,它表示通過概率分布q來表示概率分布p的困難程度。所以使用交叉熵作為
神經網路的損失函式時,p代表的是正確答案,q代表的是**值。當兩個概率分布越接近時,它們的交叉熵也就越小。
由於神經網路的輸出並不是乙個概率分布,所以需要先使用softmax將網路輸出變成乙個概率分布,再計算交叉熵。
比如,原始的神經網路輸出為y1,y2,……,yn,那麼經過softmax處理後的輸出為**化為概率分布):
tf.clip_by_value函式可以將乙個張量中的數值限制在乙個範圍內,這樣可以避免
一些運算錯誤(比如log0是無效的)。下面講解使用tf.clip_by_value函式的簡單樣例。
tf.losses.softmax_cross_entropy
onehot label 0 1
tf.losses.sparse_softmax_cross_entropy
不要onehot編碼 但必須是0-num_classes 之間的證書
tf.nn.sigmoid_cross_entropy_with_logits(logits=x_vals, labels=targets)multi_class_labels 0,1 如果不是0 把標籤朝著0.5 的方向平滑
new_multiclass_labels = multiclass_labels * (1 - label_smoothing)+ 0.5 * label_smoothing
(weighted cross entropy loss
加權sigmoid交叉熵損失函式的加權,對正目標加權。
稀疏softmax交叉熵損失函式(sparse softmax cross-entropy loss),它是把目標函式分類為true的轉化成index,而softmax交叉熵損失函式將目標轉成概率分布。
常用於回歸問題中。它的具體定義如下:
其中,yi表示乙個batch中第i個樣本的真實類別,yi'為神經網路輸出的**值。tensorflow**實現如下:
mse=tf.reduce_mean(tf.square(y_-y))
3、hinge損失函式
hinge損失函式主要用來評估支援向量機演算法,但有時也用來評估神經網路演算法。下面的示例中是計算兩個目標類(-1,1)之間的損失。下面的**中,使用目標值1,所以**值離1越近,損失函式值越小:
# use for predicting binary (-1, 1) classes# l = max(0, 1 - (pred * actual))
hinge_y_vals = tf.maximum(0., 1. - tf.multiply(target, x_vals))
hinge_y_out = sess.run(hinge_y_vals)
人人都會深度學習之Tensorflow基礎快速入門
tensorflow基礎快速入門 課程的目的是幫助廣大的深度學習愛好者,逐層深入,步步精通當下最流行的深度學習框架tensorflow。該課程包含tensorflow執行原理,tensor上面常見的操作,常見api的使用,公式推導,tensorboard,張量形狀變換,張量上的資料操作,算術操作,矩...
深度學習入門教程(2)tensorflow基本語法
乘法的具體步驟為 a b c。設新生成的矩陣的元素c i,j 表示c矩陣第i行第j列元素,他是由a矩陣第i行的行向量和b矩陣第j列的列向量做對應元素相乘後累加得到的值 向量內積 以下面為例 python的矩陣乘法有兩種,一種是對應位置的數直接相乘,表示方法是a b。例如 此外這裡要插播一下pytho...
TensorFlow 深度學習筆記
google 深度學習筆記 經常總結是個好習慣,筆記目錄奉上。歡迎star,有問題可以到issue區討論 官方教程位址 最近tensorflow團隊出了乙個model專案,和這個課程無關,但是可以參考 框架 tensorflow 谷歌出品的基於python的深度學習工具集 工具 ipython,py...