tensorflow基礎(chǔ)篇

寫(xiě)在前面

  • 態(tài)度決定高度诅病!讓優(yōu)秀成為一種習(xí)慣揍魂!
  • 世界上沒(méi)有什么事兒是加一次班解決不了的讽膏,如果有檩电,就加兩次!(- - -茂強(qiáng))

tensorflow的一般建模步驟:

  • 數(shù)據(jù)的輸入(這個(gè)有很多方法府树,讀取本地文件俐末,或者爬蟲(chóng)網(wǎng)絡(luò)數(shù)據(jù),或者數(shù)倉(cāng)都可以)

  • 數(shù)據(jù)的標(biāo)準(zhǔn)化 (主要是數(shù)據(jù)轉(zhuǎn)換成tensorflow能接受的格式)

  • 把數(shù)據(jù)分成訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)

  • 設(shè)置模型參數(shù) (主要有學(xué)習(xí)率奄侠,迭代次數(shù)卓箫,batch_size等)
    learning_rate = 0.01
    batch_size = 100
    iterations = 1000

  • 初始化variables和placeholders
    a_var = tf.constant(42)
    x_input = tf.placeholder(tf.float32, [None, input_size])
    y_input = tf.placeholder(tf.float32, [None, num_classes])
    其中( float64 and float16 )表示浮點(diǎn)類(lèi)型的不同精度

  • 創(chuàng)建模型
    y_pred = tf.add(tf.mul(x_input, weight_matrix), b_matrix)


    模型
  • 定義損失函數(shù)
    loss = tf.reduce_mean(tf.square(y_actual – y_pred)

損失函數(shù)
  • 初始化和訓(xùn)練模型
    with tf.Session(graph=graph) as session:
    ...
    session.run(...)
    ...
  • 模型評(píng)估
  • 參數(shù)或者結(jié)構(gòu)調(diào)整優(yōu)化模型
  • 模型應(yīng)用

Tensors的聲明方式

  • 創(chuàng)建一個(gè)0值填充的tensor
    zero_tsr = tf.zeros([row_dim, col_dim])
  • 創(chuàng)建一個(gè)1填充的tensor
    ones_tsr = tf.ones([row_dim, col_dim])
  • 創(chuàng)建一個(gè)常量填充的tensor
    filled_tsr = tf.fill([row_dim, col_dim], 42)
  • 通過(guò)以聲明的常量創(chuàng)建tensor
    constant_tsr = tf.constant([1,2,3])
    tf.constant(42, [row_dim, col_dim])與上一個(gè)是一樣的
  • 通過(guò)其他的tensor創(chuàng)建
    zeros_similar = tf.zeros_like(constant_tsr)
    ones_similar = tf.ones_like(constant_tsr)
  • 序列tensor
    linear_tsr = tf.linspace(start=0, stop=1, start=3)
    [0.0, 0.5, 1.0]
    integer_seq_tsr = tf.range(start=6, limit=15, delta=3)
    [6, 9, 12]
  • 隨機(jī)tensor
    randunif_tsr = tf.random_uniform([row_dim, col_dim],minval=0, maxval=1) 均與分布 ( minval <= x < maxval )
    randnorm_tsr = tf.random_normal([row_dim, col_dim],mean=0.0, stddev=1.0) 正態(tài)分布
    runcnorm_tsr = tf.truncated_normal([row_dim, col_dim],mean=0.0, stddev=1.0) 非負(fù)截尾正態(tài)分布
  • 隨機(jī)項(xiàng)數(shù)組
    shuffled_output = tf.random_shuffle(input_tensor)
    cropped_output = tf.random_crop(input_tensor, crop_size)
  • 隨機(jī)copy一個(gè)圖像
    cropped_image = tf.random_crop(my_image, [height/2, width/2,3])

variable的聲明

  • 先看一個(gè)例子,體會(huì)一下接受的入?yún)⑹鞘裁矗?br> my_var = tf.Variable(tf.zeros([row_dim, col_dim]))
  • 如何創(chuàng)建和初始化一個(gè)變量
    my_var = tf.Variable(tf.zeros([2,3]))
    sess = tf.Session()
    initialize_op = tf.global_variables_initializer ()
    sess.run(initialize_op)
  • Placeholders的直觀感受垄潮,該占位符是為了session訓(xùn)練思的數(shù)據(jù)可以從feed_dict中獲取烹卒,我們只有對(duì)placeholders有個(gè)操作才能把它放到圖中計(jì)算闷盔,首先初始化一個(gè)圖session,然后聲明一個(gè)placeholders就是x旅急,然后聲明一個(gè)y跟x之間有個(gè)恒等操作identity逢勾,然后隨機(jī)創(chuàng)建一個(gè)數(shù)據(jù)x_vals,運(yùn)行identity操作坠非。
    sess = tf.Session()
    x = tf.placeholder(tf.float32, shape=[2,2])
    y = tf.identity(x)
    x_vals = np.random.rand(2,2)
    sess.run(y, feed_dict={x: x_vals})
    # Note that sess.run(x, feed_dict={x: x_vals}) will result in a self-referencing error
  • 全局與局部初始化變量
    在初始化時(shí)沒(méi)有變量依賴(lài)順序的就用全局的
    initializer_op = tf.global_variables_initializer ()
    如果有依賴(lài)順序的就用局部的
    sess = tf.Session()
    first_var = tf.Variable(tf.zeros([2,3]))
    sess.run(first_var.initializer)
    second_var = tf.Variable(tf.zeros_like(first_var))
    # Depends on first_var
    sess.run(second_var.initialize

Matrices矩陣操作

  identity_matrix = tf.diag([1.0, 1.0, 1.0])
  A = tf.truncated_normal([2, 3])
  B = tf.fill([2,3], 5.0)
  C = tf.random_uniform([3,2])
  D = tf.convert_to_tensor(np.array([[1., 2., 3.],[-3., -7.,-1.],[0., 5., -2.]]))
  print(sess.run(identity_matrix))
  [[ 1. 0. 0.]
   [ 0. 1. 0.]
   [ 0. 0. 1.]]
  print(sess.run(A))
  [[ 0.96751703 0.11397751 -0.3438891 ]
  [-0.10132604 -0.8432678 0.29810596]]
  print(sess.run(B))
  [[ 5. 5. 5.]
  [ 5. 5. 5.]]
  print(sess.run(C))
  [[ 0.33184157 0.08907614]
  [ 0.53189191 0.67605299]
  [ 0.95889051 0.67061249]]
  print(sess.run(D))
  [[ 1. 2. 3.]
   [-3. -7. -1.]
   [ 0. 5. -2.]]
  • 矩陣的加減和乘
    print(sess.run(A+B))
    [[ 4.61596632 5.39771316 4.4325695 ]
    [ 3.26702736 5.14477345 4.98265553]]
    print(sess.run(B-B))
    [[ 0. 0. 0.]
    [ 0. 0. 0.]]
    Multiplication
    print(sess.run(tf.matmul(B, identity_matrix)))
    [[ 5. 5. 5.]
    [ 5. 5. 5.]]
  • 矩陣的行列式
    print(sess.run(tf.matrix_determinant(D)))
    -38.0
  • 矩陣的逆
    print(sess.run(tf.matrix_inverse(D)))
    [[-0.5 -0.5 -0.5 ]
    [ 0.15789474 0.05263158 0.21052632]
    [ 0.39473684 0.13157895 0.02631579]]
  • 矩陣的楚列斯基分解
    print(sess.run(tf.cholesky(identity_matrix)))
    [[ 1. 0. 1.]
    [ 0. 1. 0.]
    [ 0. 0. 1.]]
  • 矩陣的特征值與特征向量
    print(sess.run(tf.self_adjoint_eig(D))
    [[-10.65907521 -0.22750691 2.88658212]
    [ 0.21749542 0.63250104 -0.74339638]
    [ 0.84526515 0.2587998 0.46749277]
    [ -0.4880805 0.73004459 0.47834331]]
    第一行就是特征值,剩下的行就是特征向量

Operations的聲明

  • tensorflow有一些標(biāo)準(zhǔn)的operations(加減乘除)
    add() , sub() , mul() , div()

  • tensorflow提供了數(shù)種div()方法
    print(sess.run(tf.div(3,4)))
    0
    print(sess.run(tf.truediv(3,4)))
    0.75
    print(sess.run(tf.floordiv(3.0,4.0)))
    0.0

  • 取余
    print(sess.run(tf.mod(22.0, 5.0)))
    2.0

  • cross()方法
    該方法只接受兩個(gè)三維的tensor
    print(sess.run(tf.cross([1., 0., 0.], [0., 1., 0.])))
    [ 0. 0. 1.0]

  • 其他的函數(shù)列表果正,大家自己體會(huì)吧(英文不好下個(gè)金山詞霸炎码,挺好用的)

tensorflow常用數(shù)學(xué)函數(shù)
  • 特殊的數(shù)學(xué)函數(shù)
tensorflow特殊函數(shù)

# Tangent function (tan(pi/4)=1)
print(sess.run(tf.div(tf.sin(3.1416/4.), tf.cos(3.1416/4.))))
1.0

  • 自定義函數(shù)
    def custom_polynomial(value):
    return(tf.sub(3 * tf.square(value), value) + 10)
    print(sess.run(custom_polynomial(11)))
    362
  • 激活函數(shù)(不用多說(shuō)都知道激活函數(shù)吧)
  • max(0,x)
    print(sess.run(tf.nn.relu([-3., 3., 10.])))
    [ 0. 3. 10.]
  • min(max(0,x),6)
    print(sess.run(tf.nn.relu6([-3., 3., 10.])))
    [ 0. 3. 6.]
  • 1/(1+exp(-x))
    print(sess.run(tf.nn.sigmoid([-1., 0., 1.])))
    [ 0.26894143 0.5 0.7310586 ]
  • ((exp(x)-exp(-x))/(exp(x)+exp(-x)) [-1, 1]
    print(sess.run(tf.nn.tanh([-1., 0., 1.])))
    [-0.76159418 0. 0.76159418 ]
  • x/(abs(x) + 1)
    print(sess.run(tf.nn.softsign([-1., 0., -1.])))
    [-0.5 0. 0.5]
  • log(exp(x) + 1)
    print(sess.run(tf.nn.softplus([-1., 0., -1.])))
    [ 0.31326166 0.69314718 1.31326163]
  • (exp(x)+1) if x < 0 else x
    print(sess.run(tf.nn.elu([-1., 0., -1.])))
    [-0.63212055 0. 1. ]
    下面使一些圖形
Activation functions of softplus, ReLU, ReLU6, and exponential LU
Sigmoid, hyperbolic tangent (tanh), and softsign activation function

好了,基礎(chǔ)性的東西介紹就先到這里秋泳,可否贊一個(gè)潦闲?你的支持就是我的動(dòng)力!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末迫皱,一起剝皮案震驚了整個(gè)濱河市歉闰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卓起,老刑警劉巖和敬,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異戏阅,居然都是意外死亡昼弟,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)奕筐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)舱痘,“玉大人,你說(shuō)我怎么就攤上這事离赫“攀牛” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵渊胸,是天一觀的道長(zhǎng)旬盯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)翎猛,這世上最難降的妖魔是什么瓢捉? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮办成,結(jié)果婚禮上泡态,老公的妹妹穿的比我還像新娘。我一直安慰自己迂卢,他們只是感情好某弦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布桐汤。 她就那樣靜靜地躺著,像睡著了一般靶壮。 火紅的嫁衣襯著肌膚如雪怔毛。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,624評(píng)論 1 305
  • 那天腾降,我揣著相機(jī)與錄音拣度,去河邊找鬼。 笑死螃壤,一個(gè)胖子當(dāng)著我的面吹牛抗果,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奸晴,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼冤馏,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了寄啼?” 一聲冷哼從身側(cè)響起逮光,我...
    開(kāi)封第一講書(shū)人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎墩划,沒(méi)想到半個(gè)月后涕刚,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乙帮,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年副女,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚣旱。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡碑幅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出塞绿,到底是詐尸還是另有隱情沟涨,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布异吻,位于F島的核電站裹赴,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏诀浪。R本人自食惡果不足惜棋返,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雷猪。 院中可真熱鬧睛竣,春花似錦、人聲如沸求摇。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至验夯,卻和暖如春猖吴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背挥转。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工海蔽, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人绑谣。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓党窜,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親域仇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子刑然,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 簡(jiǎn)單線性回歸 import tensorflow as tf import numpy # 創(chuàng)造數(shù)據(jù) x_dat...
    CAICAI0閱讀 3,548評(píng)論 0 49
  • 1. tf函數(shù) tensorflow 封裝的工具類(lèi)函數(shù) | 操作組 | 操作 ||:-------------| ...
    南墻已破閱讀 5,124評(píng)論 0 5
  • 之前一直在用git寺擂,現(xiàn)在工作需要svn暇务,就學(xué)習(xí)了一下svn解決沖突的方法 對(duì)于剛接觸svn的人來(lái)說(shuō),svn沖突后怔软,...
    Ten_Minutes閱讀 12,285評(píng)論 0 4
  • 狡兔三窟垦细,是為“食無(wú)魚(yú)”之饋;當(dāng)馮煖為孟嘗君營(yíng)三窟之際挡逼,亦齊衰落之時(shí):夫以齊國(guó)之強(qiáng)括改,相權(quán)控于一門(mén)客之謀,惠民以私利...
    柳楓林閱讀 493評(píng)論 3 0
  • 本來(lái)我已經(jīng)決心退出這趟渾水了家坎,不想跟這些人嘱能,這些事,再有任何的關(guān)系虱疏,自己一個(gè)人默默的療傷惹骂,但是今天下午,那個(gè)男生發(fā)...
    深林小怪閱讀 514評(píng)論 0 1