常見API
str.split(分隔符,分隔次數(shù))通過指定分隔符對(duì)字符串進(jìn)行切片,返回分割后的字符串列表
str.strip([指定的字符序列])方法用于移除字符串頭尾指定的字符(默認(rèn)為空格)或字符序列,返回生成的新字符串
str.join(sequence)用于將序列中的元素以指定的字符連接生成一個(gè)新的字符串
tf.random_uniform()?((6, 6), minval=low,maxval=high,dtype=tf.float32)))返回6*6的矩陣,產(chǎn)生于low和high之間,產(chǎn)生的值是均勻分布的
tf.tile(input,multiples<某一維度上復(fù)制的次數(shù)>,name=None)
tf.concat([tensor1, tensor2,...], axis)在指定軸上拼接張量
tf.reshape()可以用來增加維度
tf.truncated_normal(shape,mean均值,stddev標(biāo)準(zhǔn)差)此函數(shù)產(chǎn)生的隨機(jī)數(shù)與均值的差距不會(huì)超過兩倍的標(biāo)準(zhǔn)差
enumerate()函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中
>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
????????[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))? ? ? # 下標(biāo)從 1 開始
????????[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
set()?函數(shù)創(chuàng)建一個(gè)無序不重復(fù)元素集,可進(jìn)行關(guān)系測(cè)試,刪除重復(fù)數(shù)據(jù)。
?>>>x = set('runoob')?
?>>> y = set('google')? ?
?>>> x, y?
(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重復(fù)的被刪除??
基本概念
特殊張量:
常量是始終會(huì)返回同一張量值的指令。x = tf.constant([5.2])
變量是會(huì)返回分配給它的任何張量的指令。y = tf.Variable([5]),?創(chuàng)建變量時(shí),您可以明確設(shè)置一個(gè)初始值,也可以使用初始化程序(例如分布)。?要更改變量的值,請(qǐng)使用?assign?操作,?向變量賦予新值時(shí),其形狀必須和之前的形狀一致。
TensorFlow 編程本質(zhì)上是一個(gè)兩步流程:
(1)將常量、變量和指令整合到一個(gè)圖中。
(2)在一個(gè)會(huì)話中評(píng)估這些常量、變量和指令。
形狀用于描述張量維度的大小和數(shù)量。張量的形狀表示為?list,其中第?i?個(gè)元素表示維度?i?的大小。列表的長度表示張量的階(即維數(shù))。matrix0 = tf.zeros([2, 2]),形狀(shape)也可以用元組表示。(None表示可變長度)
0階張量(常數(shù))的形狀= []
s_1_flex = [None]??
s_2_flex = (None, 3)
s_3_flex = [2, None, None]?
以下代碼展示了如何創(chuàng)建大小與給定矩陣中的列數(shù)相同的零矢量:
zeros = tf.zeros(my_matrix.shape[1])
在數(shù)學(xué)中,您只能對(duì)形狀相同的張量執(zhí)行元素級(jí)運(yùn)算(例如,相加和等于)。不過,在 TensorFlow 中,您可以對(duì)張量執(zhí)行傳統(tǒng)意義上不可行的運(yùn)算。利用廣播,元素級(jí)運(yùn)算中的較小數(shù)組會(huì)增大到與較大數(shù)組具有相同的形狀。
我們使用一種稱為“特征列”的結(jié)構(gòu)來表示特征的數(shù)據(jù)類型。特征列僅存儲(chǔ)對(duì)特征數(shù)據(jù)的描述;不包含特征數(shù)據(jù)本身。
batch_size:此整數(shù)指定每個(gè)批次的大小。請(qǐng)注意,如果樣本總數(shù)不能被批次大小整除,則最后一個(gè)批次可能更小。
pandas
DataFrame(數(shù)據(jù)框架),您可以將它想象成一個(gè)關(guān)系型數(shù)據(jù)表格,其中包含多個(gè)行和已命名的列。
Series,它是單一列。DataFrame?中包含一個(gè)或多個(gè)?Series,每個(gè)?Series?均有一個(gè)名稱。
高階API:??keras的使用
低階API:張量、變量、圖表、會(huì)話的使用(適當(dāng)?shù)氖褂玫碗AAPI,實(shí)驗(yàn)和調(diào)試都會(huì)更直接,且能夠理解其內(nèi)部工作原理)
您可以將 TensorFlow Core 程序看作由兩個(gè)互相獨(dú)立的部分組成:
1.構(gòu)建計(jì)算圖 (tf.Graph)
2.運(yùn)行計(jì)算圖(使用?tf.Session)
圖:
計(jì)算圖是排列成一個(gè)圖的一系列 TensorFlow 指令。圖由兩種類型的對(duì)象組成 :
1、操作(簡(jiǎn)稱“op”):圖的節(jié)點(diǎn)。操作描述了消耗和生成張量的計(jì)算
2、張量:圖的邊。它們代表將流經(jīng)圖的值。大多數(shù) TensorFlow 函數(shù)會(huì)返回?tf.Tensors
會(huì)話:
會(huì)話會(huì)封裝 TensorFlow 運(yùn)行時(shí)的狀態(tài),并運(yùn)行 TensorFlow 操作。如果說?tf.Graph?像一個(gè)?.py?文件,那么?tf.Session?就像一個(gè)?python?可執(zhí)行對(duì)象。
當(dāng)您使用?Session.run?請(qǐng)求輸出節(jié)點(diǎn)時(shí),TensorFlow 會(huì)回溯整個(gè)圖,并流經(jīng)提供了所請(qǐng)求的輸出節(jié)點(diǎn)對(duì)應(yīng)的輸入值的所有節(jié)點(diǎn)。
您可以將多個(gè)張量傳遞給?tf.Session.run。run?方法以透明方式處理元組或字典的任何組合。它返回的結(jié)果擁有相同的布局結(jié)構(gòu)。??
創(chuàng)建會(huì)話對(duì)象后,可以使用 sess.run (node) 返回節(jié)點(diǎn)的值,并且 Tensorflow 將執(zhí)行確定該值所需的所有計(jì)算。
我們還可以傳遞一個(gè)列表,sess.run ([node1,node2,...]),并讓它返回多個(gè)輸出
一般來說,sess.run () 調(diào)用往往是最大的 TensorFlow 瓶頸之一,所以調(diào)用它的次數(shù)越少越好。可以的話在一個(gè) sess.run () 調(diào)用中返回多個(gè)項(xiàng)目,而不是進(jìn)行多個(gè)調(diào)用。
Tensorflow 僅通過必需的節(jié)點(diǎn)自動(dòng)路由計(jì)算這一事實(shí)是它的巨大優(yōu)勢(shì)。如果計(jì)算圖非常大并且有許多不必要的節(jié)點(diǎn),它就能節(jié)約大量運(yùn)行時(shí)間。
在深度學(xué)習(xí)中,典型的“內(nèi)循環(huán)”訓(xùn)練如下:
獲取輸入和 true_output
根據(jù)輸入和參數(shù)計(jì)算出一個(gè)“猜測(cè)”
根據(jù)猜測(cè)和 true_output 之間的差異計(jì)算出一個(gè)“損失”
根據(jù)損失的梯度更新參數(shù)