TensorFlow 2.0


github:https://github.com/dragen1860/Deep-Learning-with-TensorFlow-book

1、數(shù)據(jù)類型

x = tf.constant([[3,2],[3,4],[3,4]]) #?constant:不可變常量?3行2列?

print(type(x.shape))? ?#<class 'tensorflow.python.framework.tensor_shape.TensorShape'>

print(x.shape)? #?(3, 2)? ??3行2列

print(x.shape[0],x.shape[1], x.shape[-1], x.shape[-2]? ) # 3 2 2 3? ?x.shape[0]:行數(shù)疯潭;x.shape[1]:列數(shù)坝锰;x.shape[-1]:列數(shù)

2笋额、待優(yōu)化張量 - Variable

用來(lái)定義:要計(jì)算梯度并優(yōu)化的張量(屬于一種特殊的張量)淋纲,如神經(jīng)網(wǎng)絡(luò)層的W和??啄巧。默認(rèn)屬性trainable=true(啟動(dòng)張量?jī)?yōu)化)

v=tf.Variable([[1,2,3],[3,4,5]])? #?shape=(2, 3)? 2行3列??

3涮总、創(chuàng)建張量

Numpy類型轉(zhuǎn)tensor類型

a=tf.convert_to_tensor(np.array([[1,2.],[3,4]]))

創(chuàng)建全 0济瓢,全 1 張量

a =tf.fill([2,3],1) #?tf.Tensor( [[1 1 1] [1 1 1]], shape=(2, 3), dtype=int32),value值決定類型妹卿。包含tf.zeros、tf.ones的賦值

b =tf.zeros([2,3],dtype=tf.dtypes.float32)?#?全 0 張量, 值默認(rèn)float32類型

b =tf.ones([2,3],dtype=tf.dtypes.float32)? ?# 全 1 張量, 值默認(rèn)float32類型

創(chuàng)建正態(tài)分布和均勻分布 張量

正態(tài)分布張量

通過(guò) tf.random.normal(shape, mean=0.0, stddev=1.0)可以創(chuàng)建形狀為 shape蔑鹦,均值為mean夺克,標(biāo)準(zhǔn)差為 stddev 的正態(tài)分布??(????????, ????????????2)。例如:

創(chuàng)建均值為 0嚎朽,標(biāo)準(zhǔn)差為 1的正太分布:a=tf.random.normal([2,3])

創(chuàng)建均值為 1铺纽,標(biāo)準(zhǔn)差為 2 的正太分布:a=tf.random.normal([2,2], mean=1,stddev=2)

tf.random.truncated_normal([784, 256])? 正態(tài)分布取值會(huì)在區(qū)間(μ-2σ,μ+2σ)內(nèi)哟忍,否則重新取值

均勻分布?張量

創(chuàng)建采樣自[????????????, ????????????]區(qū)間的均勻分布的張量狡门。例如

創(chuàng)建采樣自區(qū)間[0,1]陷寝,shape 為[2,2]的矩陣:tf.random.uniform([2,2])

創(chuàng)建采樣自區(qū)間[0,10],shape 為[2,2]的矩陣: tf.random.uniform([2,2],maxval=10)

創(chuàng)建序列張量

tf.range(limit, delta=1)可以創(chuàng)建[0,??????????)之間其馏,步長(zhǎng)為 delta 的整形序列凤跑,不包含 limit 本身

例如,創(chuàng)建 0~9叛复,步長(zhǎng)為 1 的整形序列:?

a=tf.range(10)? # tf.Tensor([0 1 2 3 4 5 6 7 8 9], shape=(10,), dtype=int32)

向量

Dense全連接層創(chuàng)建

fc = layers.Dense(3) # 創(chuàng)建一層 Wx+b仔引,輸出節(jié)點(diǎn)為 3

# 通過(guò) build 函數(shù)創(chuàng)建 W,b 張量,輸入節(jié)點(diǎn)為 4

fc.build(input_shape=(2,4))

print(fc.kernel) # W? ?shape=(4, 3)? ?4行3列向量?

print(fc.bias)? # 查看偏置b??shape=(3,)

索引與切片

x = tf.random.normal([4,32,32,3])

print(x[0])? ?#? shape=(32, 32, 3)

start: end: step切片的簡(jiǎn)寫方式褐奥,其中從第一個(gè)元素讀取時(shí) start 可以省略咖耘,即 start=0 是可以省略,取到最后一個(gè)元素時(shí) end 可以省略撬码,步長(zhǎng)為 1 時(shí) step 可以省略

以 shape 為[4,32,32,3]的圖片張量為例, 讀取第 2,3 張圖片:? x[1:3]? ?# shape=(2, 32, 32, 3)

2儿倒、維度變換Reshape

x=tf.range(96)? # shape=(96,)

y= tf.reshape(x,[2,4,4,3]),過(guò)張量的 ndim 和 shape 成員屬性獲得張量的維度數(shù)和形狀: x.ndim, x.shape? #??(4, TensorShape([2, 4, 4, 3]))

tf.reshape(x, new_shape)呜笑,將張量的視圖任意的合法改變夫否。其中的參數(shù)-1 表示當(dāng)前軸上長(zhǎng)度需要根據(jù)視圖總元素不變的法則自動(dòng)計(jì)算

tf.reshape(x,[2,-1,3])? # x總共有96個(gè)元素,? 96/(2*3)=16蹈垢,即-1位置應(yīng)該對(duì)應(yīng)16個(gè)元素慷吊,所以? shape=(2, 16, 3)

# x [b, 28, 28] => [b, 28*28]

x = tf.reshape(x, [-1, 28*28])

維度增(expand_dims)刪 (squeeze)

x = tf.random.uniform([28,28],maxval=10,dtype=tf.int32)? #?x.ndim=2 ,? ? x.shape=(28, 28)?

通過(guò) tf.expand_dims(x, axis)可在指定的 axis 軸插入一個(gè)新的維度(插入新維度原始數(shù)據(jù)不會(huì)變):

y = tf.expand_dims(x,axis=0)???# y.ndim=3 曹抬,? ??y.shape=(1, 28, 28)? ?在第0維度上插入一維

y = tf.expand_dims(x,axis=2)???# y.ndim=3 溉瓶,? ??y.shape=(28, 28, 1)? ?在第2維度上插入一維

y = tf.squeeze(y, axis=0)? # y.ndim=2 ,? ??y.shape=(28, 28)? ?只能刪除長(zhǎng)度為 1 的維度(數(shù)據(jù)縮小一維)谤民, 不會(huì)改變張量的存儲(chǔ)堰酿。如果不指定axis參數(shù),刪除所有長(zhǎng)度為 1 的維度张足。

數(shù)據(jù)復(fù)制和Broadcasting廣播機(jī)制(自動(dòng)擴(kuò)展)

b = tf.constant([1,2])? #??x.ndim=1 触创, tf.Tensor([1 2], shape=(2,), dtype=int32)

b = tf.expand_dims(b, axis=0)??#x.ndim=2 , tf.Tensor([[1 2]], shape=(1, 2), dtype=int32)

c = tf.tile(b,multiples=[2,1])???#x.ndim=2 为牍,tf.Tensor([[1 2][1 2]], shape=(2, 2), dtype=int32)

操作符+在遇到 shape 不一致的 2 個(gè)張量時(shí)哼绑,會(huì)自動(dòng)考慮將 2 個(gè)張量Broadcasting 到一致的 shape, 它調(diào)用 Broadcasting函數(shù) tf.broadcast_to(x, new_shape)實(shí)現(xiàn)碉咆。

x = tf.random.normal([2,4])

w = tf.random.normal([4,3])

b = tf.random.normal([3])

y = x@w+b? ?---->?y = x@w + tf.broadcast_to(b,[2,3])? ?#?列數(shù)不變抖韩,行數(shù)復(fù)制擴(kuò)充。

數(shù)學(xué)運(yùn)算

加(tf.add +)減(tf.subtract -)乘(tf.multiply *)除(tf.divide /)整除(//)余除(%)

乘方( tf.pow(x, a) 或?? ?? ???)

x = tf.range(4)? ?#??tf.Tensor([0 1 2 3], shape=(4,), dtype=int32)

tf.pow(x,3)? ?#??tf.Tensor([ 0 1 8 27], shape=(4,), dtype=int32)

y = tf.square(x) #?平方

z=tf.sqrt(x)? ?#?平方根

指數(shù)(tf.pow(x, a) 或?? ?? ???)對(duì)數(shù)

自然指數(shù) 可以通過(guò) tf.exp(x)實(shí)現(xiàn)疫铜,自然對(duì)數(shù)l g?? ??可以通過(guò) tf.math.log(x)實(shí)現(xiàn)

x=tf.exp(3.)? #??tf.Tensor(20.085537, shape=(), dtype=float32)

y=tf.math.log(x)? #??tf.Tensor(3.0, shape=(), dtype=float32)

矩陣相乘(tf.multiply *)

a 和 b 能夠矩陣相乘的條件是茂浮,a 的倒數(shù)第一個(gè)維度長(zhǎng)度(列)和b 的倒數(shù)第二個(gè)維度長(zhǎng)度(行)必須相等(b最后一維是輸出維數(shù))

多層神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn):https://github.com/jianjunyue/deepplus/blob/master/tensorflow/%E5%A4%9A%E5%B1%82%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C.py

TensorFlow 進(jìn)階

合并(tf.concat) 堆疊(tf.stack) 分割( tf.split )

a = tf.random.normal([4,35,8]) # 模擬成績(jī)冊(cè) A

b = tf.random.normal([6,35,8]) # 模擬成績(jī)冊(cè) B

tf.concat([a,b],axis=0) # 合并成績(jī)冊(cè)?axis=0 表示在第一維上進(jìn)行合并,剩下其它維shape要相同

a = tf.random.normal([35,8])

b = tf.random.normal([35,8])

tf.stack([a,b],axis=0) # 堆疊合并為 2 個(gè)班級(jí)??axis=0 表示在第一維前面增加一維,要堆疊的a席揽、b的shape要相同

?分割(?tf.split?)

x = tf.random.normal([10,35,8])

result = tf.split(x,axis=0,num_or_size_splits=10)? ?#??print(type(result)) -->?<class 'list'> ;?print(result[0].shape)-->??(1, 35, 8)

result = tf.split(x,axis=0,num_or_size_splits=[4,2,2,2])? #?print(result[0].shape)-->??(4, 35, 8)

result = tf.unstack(x,axis=0)# Unstack 為長(zhǎng)度為 1??result[0].shape-->?(35, 8)??unstack與split區(qū)別是分割后顽馋,維度沒(méi)有了

向量范數(shù)

x = tf.ones([2,2])

tf.norm(x,ord=1) # 計(jì)算 L1 范數(shù) ,?L1 范數(shù)幌羞,定義為向量??的所有元素絕對(duì)值之和

tf.norm(x,ord=2) # 計(jì)算 L2 范數(shù) 寸谜,?L2 范數(shù),定義為向量??的所有元素的平方和新翎,再開(kāi)根號(hào)

tf.norm(x,ord=np.inf) # 計(jì)算∞范數(shù)? ∞ ?范數(shù)程帕,定義為向量??的所有元素絕對(duì)值的最大值

最大值(reduce_max)、最小值(reduce_min)地啰、均值(reduce_mean)愁拭、和(reduce_sum?)

通過(guò) tf.reduce_max, tf.reduce_min, tf.reduce_mean, tf.reduce_sum 可以求解張量在某個(gè)維度上的最大、最小亏吝、均值岭埠、和,也可以求全局最大蔚鸥、最小惜论、均值、和信息止喷。

x = tf.random.normal([4,10])

tf.reduce_max(x,axis=1) # 統(tǒng)計(jì)第2維上的最大值

tf.reduce_min(x,axis=1) # 統(tǒng)計(jì)第2維上的最小值

tf.reduce_mean(x,axis=1) # 統(tǒng)計(jì)第2維上的均值

當(dāng)不指定 axis 參數(shù)時(shí)馆类,tf.reduce_*函數(shù)會(huì)求解出全局元素的最大、最小弹谁、均值乾巧、和

out = tf.random.normal([2,10])

max=tf.reduce_max(out,axis=1)# 返回第一維概率最大的值? tf.Tensor([1.1277846 0.40908417], shape=(2,), dtype=float32)? ?,?1.1277846 --> 7位置值预愤,0.40908417?--> 4位置值

pred = tf.argmax(out,axis=1)# 返回第一維概率最大值的位置?tf.Tensor([7 4], shape=(2,), dtype=int64)

argmin = tf.argmin(out,axis=1)# 返回第一維概率最小值的位置?tf.Tensor([3 8], shape=(2,), dtype=int64)

out = tf.random.normal([4,10])# 網(wǎng)絡(luò)預(yù)測(cè)輸出

y = tf.constant([1,2,2,0])# 真實(shí)標(biāo)簽

y = tf.one_hot(y,depth=10)# one-hot 編碼

loss = tf.keras.losses.mse(y,out) # 計(jì)算每個(gè)樣本的誤差?tf.Tensor([0.7126961 0.79759413 0.5432343 0.9807483 ], shape=(4,), dtype=float32)

loss1 = tf.reduce_mean(loss) # 平均誤差??tf.Tensor(0.75856817, shape=(), dtype=float32)

out = tf.nn.softmax(out, axis=1) # 輸出轉(zhuǎn)換為概率 ?

loss =tf.keras.losses.mse(y,out) # 計(jì)算每個(gè)樣本的誤差 ?

---------------------------------------------------

a=tf.random.uniform([2,5],maxval=5,dtype=tf.int32)? # tf.Tensor([[0 4 1 4 0][2 4 2 1 3]], shape=(2, 5), dtype=int32)

b=tf.random.uniform([2,5],maxval=5,dtype=tf.int32) #tf.Tensor([[0 0 1 4 0][2 4 4 4 2]], shape=(2, 5), dtype=int32)

c=tf.equal(a,b) # 特征值是否相等? tf.Tensor([[ True False? True? True? True][ True? True False False False]], shape=(2, 5), dtype=bool)

d = tf.cast(c,dtype=tf.float32) # 布爾型轉(zhuǎn) int 型沟于!? tf.Tensor([[1. 0. 1. 1. 1.][1. 1. 0. 0. 0.]], shape=(2, 5), dtype=float32)

e=tf.reduce_sum(d,axis=1)? #? 第二維求和? tf.Tensor([4. 2.], shape=(2,), dtype=float32)

f=tf.reduce_sum(d) # 求總和 tf.Tensor(6.0, shape=(), dtype=float32)

常見(jiàn)大小比較函數(shù):

g=tf.math.greater(a,b)? # a>b 為true tf.Tensor([[False False? True False False][False? True? True? True False]], shape=(2, 5), dtype=bool)

m=tf.math.greater_equal(a,b)?# a>=b 為true

h=tf.math.less(a,b)?? # a<b 為true

n=tf.math.less_equal(a,b)??? # a<=b 為true

l=tf.math.not_equal(a,b)?? # a不等于b 為true

t=tf.math.is_nan(a)? # a=nan? ?為true

---------------------------------------------------?

填充?tf.pad(x, paddings)函數(shù)

b = tf.constant([1,2,3,4]) # 0維數(shù)據(jù)? shape:(4,)

p = tf.constant([[1,3]]) #???shape:(1, 2)

c = tf.pad(b, p)? #?一維數(shù)據(jù) 的 pad填充 ,tf.Tensor([0 1 2 3 4 0 0 0], shape=(8,), dtype=int32)植康,分別在左(1)右(3)填充

b = tf.constant([[1,2,3,4]])??# 一維數(shù)據(jù)?shape:?(1, 4)

p = tf.constant([[1,3],[1,2]])??#???shape:(2, 2)

c = tf.pad(b, p)# 填充?tf.Tensor([[0 0 0 0 0 0 0][0 1 2 3 4 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0][0 0 0 0 0 0 0]], shape=(5, 7), dtype=int32)? ? ?分別在上(1)下(3)左(1)右(2)填充

b = tf.constant([[1,3],[1,2]])??#?二維數(shù)據(jù)????shape:(2, 2)

p = tf.constant([[1,3],[1,2]])??#???shape:(2, 2)

c = tf.pad(b, p)# 填充?tf.Tensor([[0 0 0 0 0][0 1 3 0 0][0 1 2 0 0][0 0 0 0 0][0 0 0 0 0][0 0 0 0 0]], shape=(6, 5), dtype=int32)?? ? ?分別在上(1)下(3)左(1)右(2)填充

復(fù)制(tf.tile)

x = tf.random.normal([4,32,32,3])

y=tf.tile(x,[2,3,3,1]) # 數(shù)據(jù)復(fù)制? y.shape:(8, 96, 96, 3)旷太,對(duì)應(yīng)維度進(jìn)行倍數(shù)復(fù)制

數(shù)據(jù)限幅--下限幅tf.maximum(x,a)? 上限幅tf.minimum(x,a)?

x=tf.range(10)? #?tf.Tensor([0 1 2 3 4 5 6 7 8 9], shape=(10,), dtype=int32)

y=tf.maximum(x,4)? #? 下限幅?tf.Tensor([4 4 4 4 4 5 6 7 8 9], shape=(10,), dtype=int32)

z=tf.minimum(x,6)? ?#?上限幅 tf.Tensor([0 1 2 3 4 5 6 6 6 6], shape=(10,), dtype=int32)

m=tf.clip_by_value(x,4,6)? #?下限幅 和?上限幅 ?tf.Tensor([4 4 4 4 4 5 6 6 6 6], shape=(10,), dtype=int32)

收集tf.gather

x = tf.random.uniform([4,35,8],maxval=100,dtype=tf.int32)# 4 個(gè)班級(jí),每個(gè)班級(jí) 35 個(gè)學(xué)生销睁,8 門科目供璧,保存成績(jī)冊(cè)的張量 shape 為[4,35,8]。

y=tf.gather(x,[0,1],axis=0) # 在班級(jí)維度收集第 1-2 號(hào)班級(jí)成績(jī)冊(cè) shape 為(2, 35, 8)

y=tf.gather(x,[0,1],axis=0) 等價(jià)于 切片??[: 2]冻记,但gather支持不規(guī)則索引收集

tf.gather(x,[0,3,8,11,12,26],axis=1)?# 收集第 1,4,9,12,13,27 號(hào)同學(xué)成績(jī)

多維度收集tf.gather_nd

tf.gather_nd(x,[[1,1],[2,2],[3,3]])???# 根據(jù)多維度坐標(biāo)收集數(shù)據(jù)

掩碼 tf.boolean_mask

x = tf.random.uniform([4,35,8],maxval=100,dtype=tf.int32)# 4 個(gè)班級(jí)睡毒,每個(gè)班級(jí) 35 個(gè)學(xué)生,8 門科目檩赢,保存成績(jī)冊(cè)的張量 shape 為[4,35,8]。

y=tf.boolean_mask(x,mask=[True, False,False,True],axis=0)# 根據(jù)掩碼方式采樣班級(jí)(第 1 和第 4 個(gè)班級(jí))? shape=(2, 35, 8)。掩碼的長(zhǎng)度必須與對(duì)應(yīng)維度的長(zhǎng)度一致

# tf.boolean_mask 的用法其實(shí)與 tf.gather 非常類似贞瞒,只不過(guò)一個(gè)通過(guò)掩碼方式采樣偶房,一個(gè)直接給出索引號(hào)采樣。y=tf.gather(x,[0,3],axis=0)? 和?y=tf.boolean_mask(x,mask=[True, False,False,True],axis=0) 等價(jià)

x = tf.random.uniform([2,3,8],maxval=100,dtype=tf.int32)

y=tf.boolean_mask(x,[[True,True,False],[False,True,True]])? #??shape=(4, 8)

z=tf.gather_nd(x,[[0,0],[0,1],[1,1],[1,2]])? # shape=(4, 8)? ?y和z等價(jià)军浆。收集0行0列棕洋、0行1列、1行1列乒融、1行2列

tf.where 掰盘?


tf.scatter_nd?


tf.meshgrid赞季?


六愧捕、神經(jīng)網(wǎng)絡(luò)?

6.1 激活函數(shù)

1、tf.nn.sigmoid? ?

到?? ∈ [0,1]區(qū)間申钩。?Sigmoid 函數(shù)在輸入值較大或較小時(shí)容易出現(xiàn)梯度值接 近于 0 的現(xiàn)象次绘,稱為梯度彌散現(xiàn)象

z = tf.constant([2.,1.,0.1])

y=tf.nn.sigmoid(z)? ?#?tf.Tensor([0.880797 0.7310586 0.5249792], shape=(3,), dtype=float32)

2、tf.nn.relu

ReLU(REctified Linear Unit撒遣,修正線性單元)激活函數(shù)邮偎。?? ∈ [0,x]區(qū)間。ReLU 函數(shù)在?? < 0時(shí)梯度值恒為 0义黎,也可能會(huì)造成梯度彌散現(xiàn)象

3禾进、tf.nn.leaky_relu?

tf.nn.leaky_relu(x, alpha=0.1) # 通過(guò) LeakyReLU激活函數(shù)。其中 alpha 參數(shù)即??參數(shù)

4廉涕、tf.nn.tanh

Tanh 函數(shù)能夠?qū)?? ∈ ??的輸入“壓縮”到[?1,1]區(qū)間泻云。tanh 激活函數(shù)可通過(guò) Sigmoid 函數(shù)縮放平移后實(shí)現(xiàn)

輸出函數(shù)

1、Softmax 函數(shù)

z = tf.constant([2.,1.,0.1])

tf.nn.softmax(z) # 通過(guò) Softmax 函數(shù)?tf.Tensor([0.6590012 0.24243298 0.09856589], shape=(3,), dtype=float32)? 元素和為1


6.2 誤差函數(shù)

1火的、均方差

均方差誤差(Mean Squared Error, MSE)函數(shù)把輸出向量和真實(shí)向量的兩個(gè)點(diǎn)之間的歐式距離

均方差廣泛應(yīng)用在回歸問(wèn)題中壶愤,在分類問(wèn)題中也可以應(yīng)用均方差誤差

loss = keras.losses.MSE(y_onehot, o) # 計(jì)算均方差,返回每個(gè)維度的均方差?shape=(2,)

loss = tf.reduce_mean(loss) # 計(jì)算batch均方差???shape=()

criteon = keras.losses.MeanSquaredError()?# 創(chuàng)建 MSE 類 計(jì)算均方差?

loss = criteon(y_onehot,o) # 計(jì)算 batch 均方差???shape=()

2馏鹤、交叉熵


6.3?神經(jīng)網(wǎng)絡(luò)類型

CNN(卷積神經(jīng)網(wǎng)絡(luò))征椒、RNN(循環(huán)神經(jīng)網(wǎng)絡(luò),LSTM)、DNN(深度神經(jīng)網(wǎng)絡(luò)湃累、全連接網(wǎng)絡(luò))勃救、注意力機(jī)制(Attention)網(wǎng)絡(luò)、圖神經(jīng)網(wǎng)絡(luò)(GCN)

激活函數(shù)(tf.keras.activations.*)?

tf.keras.activations.relu() relu激活函數(shù)? ?? ∈ [0,x]區(qū)間治力,適合多層網(wǎng)絡(luò)? 是tf.keras中的實(shí)現(xiàn)? --- > relu?蒙秒;tf.nn.relu是tensorflow中的實(shí)現(xiàn)? ?--->? tf.nn.leaky_relu

tf.keras.activations.tanh() tanh激活函數(shù)??? ∈ [-1,1]區(qū)間

tf.keras.activations.sigmoid() sigmoid激活函數(shù)???? ∈ [0,1]區(qū)間,適合淺層網(wǎng)絡(luò)宵统,多層容易出現(xiàn)梯度彌散現(xiàn)象


tf.keras.activations.softmax() softmax激活函數(shù)

tf.keras.activations.elu()指數(shù)線性激活函數(shù)

tf.keras.activations.hard_sigmoid() Hard sigmoid激活函數(shù)

tf.keras.activations.exponential()指數(shù)激活函數(shù)

tf.keras.activations.linear()線性激活函數(shù)

tf.keras.activations.selu() selu激活函數(shù)

tf.keras.activations.softplus() softplus激活函數(shù)

tf.keras.activations.softsign() softsign激活函數(shù)

損失函數(shù)(tf.keras.losses.*) 或

tf.keras.losses.categorical_crossentropy # -->?categorical_crossentropy (多分類的對(duì)數(shù)損失函數(shù),交叉熵),與 softmax 相對(duì)應(yīng)的損失函數(shù)晕讲,針對(duì)于多分類問(wèn)題。對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.categorical_crossentropy

tf.keras.losses.binary_crossentropy # --> binary_crossentropy(對(duì)數(shù)損失函數(shù),交叉熵),即 log loss,與 sigmoid 相對(duì)應(yīng)的損失函數(shù)瓢省,針對(duì)于二分類問(wèn)題弄息。??對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.binary_crossentropy。

如果使用的是類勤婚,那么別忘了后面呢還有一個(gè)括號(hào)摹量,用來(lái)得到實(shí)例化的對(duì)象;如果是函數(shù)就只寫函數(shù)名就可以了馒胆。tf.keras.losses.CategoricalCrossentropy()? -->?tf.keras.losses.categorical_crossentropy -->?categorical_crossentropy 缨称。

不管是BinaryCrossentropy還是CategoricalCrossentropy,其實(shí)兩者都可以用于二分類或者多分類祝迂,沒(méi)有那么明顯的界線睦尽,后者是在前者的基礎(chǔ)上進(jìn)行擴(kuò)展得來(lái)的。但是一般情況下都是按照上述例子中的默認(rèn)用法進(jìn)行使用的液兽。?

tf.keras.losses.sparse_categorical_crossentropy # (稀疏性多分類的對(duì)數(shù)損失函數(shù),交叉熵) 在上面的多分類的對(duì)數(shù)損失函數(shù)的基礎(chǔ)上骂删,增加了稀疏性(即數(shù)據(jù)中多包含一定0數(shù)據(jù)的數(shù)據(jù)集)?對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.sparse_categorical_crossentropy

tf.keras.losses.mean_squared_error? ?--> mean_squared_error或mse(均方誤差)等價(jià)?keras.losses.mse,keras.losses.MSE四啰,tf.keras.losses.MeanSquaredError宁玫。對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.mean_squared_error,keras.metrics.mse柑晒,keras.metrics.MSE

tf.keras.losses.mean_absolute_error??-->?mean_absolute_error??欧瘪,mae (平均絕對(duì)值誤差)等價(jià)?keras.losses.mae,keras.losses.MAE匙赞,tf.keras.losses.MeanAbsoluteError佛掖。對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.mean_absolute_error,keras.metrics.mae涌庭,keras.metrics.MAE

tf.keras.losses.mean_absolute_percentage_error --->??mean_absolute_percentage_error或mape芥被。等價(jià)?keras.losses.mape,keras.losses.MAPE坐榆。對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.mean_absolute_percentage_error拴魄,keras.metrics.mape,keras.metrics.MAPE

tf.keras.losses.mean_squared_logarithmic_error?? --->? mean_squared_logarithmic_error或msle席镀。 等價(jià)??keras.losses.msle匹中,keras.losses.MSLE。對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.mean_squared_logarithmic_error豪诲,keras.metrics.msle顶捷,keras.metrics.MSLE

tf.keras.losses.squared_hinge??對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.squared_hinge

tf.keras.losses.hinge????對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.hinge

tf.keras.losses.kullback_leibler_divergence??????等價(jià)??keras.losses.kld,keras.losses.KLD屎篱。???對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.kullback_leibler_divergence服赎,keras.metrics.kld葵蒂,keras.metrics.KLD

tf.keras.losses.poisson???對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.poisson

tf.keras.losses.cosine_similarity??????等價(jià)?keras.losses.cosine_proximity,keras.losses.cosine重虑。???對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.metrics.cosine_proximity刹勃,keras.metrics.cosine

tf.keras.losses.logcosh???對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.losses.logcosh

tf.keras.losses.categorical_hinge???對(duì)應(yīng)評(píng)價(jià)函數(shù):keras.losses.categorical_hinge


優(yōu)化器(tf.keras.optimizers.*)?

tf.keras.optimizers.RMSprop? --> RMSprop

tf.keras.optimizers.SGD? -->? ?SGD 、sgd

tf.keras.optimizers.Adam

tf.keras.optimizers.Adadelta

tf.keras.optimizers.Adagrad

tf.keras.optimizers.Adamax

tf.keras.optimizers.Ftrl

tf.keras.optimizers.Nadam

評(píng)價(jià)函數(shù)(metrics)?

tf.keras.metrics.Accuracy? ? --> accuracy

tf.keras.metrics.BinaryAccuracy? --> binary_accuracy

tf.keras.metrics.BinaryCrossentropy -->?binary_crossentropy

tf.keras.metrics.CategoricalAccuracy? -->?categorical_accuracy

tf.keras.metrics.CategoricalCrossentropy -->?categorical_crossentropy

tf.keras.metrics.SparseCategoricalAccuracy -->?sparse_categorical_accuracy

tf.keras.metrics.SparseCategoricalCrossentropy -->?sparse_categorical_crossentropy

正則化?

https://mp.weixin.qq.com/s/qVGd7vfhEcchOuYp8IN6Rw

dropout?

# 添加 dropout 操作

x = tf.nn.dropout(x, rate=0.5)

# 添加 Dropout 層

model.add(layers.Dropout(rate=0.5))

隨機(jī)打散通

Dataset.shuffle(buffer_size)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末嚎尤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子伍宦,更是在濱河造成了極大的恐慌芽死,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件次洼,死亡現(xiàn)場(chǎng)離奇詭異关贵,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)卖毁,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門揖曾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人亥啦,你說(shuō)我怎么就攤上這事炭剪。” “怎么了翔脱?”我有些...
    開(kāi)封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵奴拦,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我届吁,道長(zhǎng)错妖,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任疚沐,我火速辦了婚禮暂氯,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘亮蛔。我一直安慰自己痴施,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布尔邓。 她就那樣靜靜地躺著晾剖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪梯嗽。 梳的紋絲不亂的頭發(fā)上齿尽,一...
    開(kāi)封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音灯节,去河邊找鬼循头。 笑死绵估,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的卡骂。 我是一名探鬼主播国裳,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼全跨!你這毒婦竟也來(lái)了缝左?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤浓若,失蹤者是張志新(化名)和其女友劉穎渺杉,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體挪钓,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡是越,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了碌上。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片倚评。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖馏予,靈堂內(nèi)的尸體忽然破棺而出天梧,到底是詐尸還是另有隱情,我是刑警寧澤霞丧,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布腿倚,位于F島的核電站,受9級(jí)特大地震影響蚯妇,放射性物質(zhì)發(fā)生泄漏敷燎。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一箩言、第九天 我趴在偏房一處隱蔽的房頂上張望硬贯。 院中可真熱鬧,春花似錦陨收、人聲如沸饭豹。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)拄衰。三九已至,卻和暖如春饵骨,著一層夾襖步出監(jiān)牢的瞬間翘悉,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工居触, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留妖混,地道東北人老赤。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像制市,于是被迫代替她去往敵國(guó)和親抬旺。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349