Tensorflow現(xiàn)狀
為什么選擇tensorflow呢边涕?不是因?yàn)樗嗝炊嗝磳盼畹猓且驗(yàn)樗脑O(shè)計(jì)很符合一個(gè)神經(jīng)網(wǎng)絡(luò)庫,比如說什么圖啊,數(shù)據(jù)流啊哼蛆,咋一聽你可能沒有感覺,你想一下神經(jīng)網(wǎng)絡(luò)不也是這樣的嗎霞赫?
至于mxnet腮介,caffe這樣的庫,學(xué)會了tensorflow之后并沒有感覺這些庫有什么難點(diǎn)端衰,更多是覺得這些庫寫的更亂叠洗。為什么這么說?因?yàn)檫@些庫沒有一個(gè)基礎(chǔ)旅东,也就是根本灭抑,不像tensorflow,你構(gòu)建一個(gè)
深度神經(jīng)網(wǎng)絡(luò)模型抵代,在復(fù)雜在難腾节,它也是一個(gè)圖,而且你可以跟蹤每一個(gè)的輸入輸出荤牍,這個(gè)在caffe里面也有這種設(shè)計(jì)案腺,只是通過prototxt來展示,但是我個(gè)人感覺那種格式機(jī)器看還可以康吵,人看頭疼劈榨。
閑話不多說,既然吹牛逼說三行代碼入門那我們就三行代碼晦嵌。
重點(diǎn)
學(xué)習(xí)任何東西都只需要精髓同辣,其它的,慢慢來惭载,tf的精髓是什么呢旱函?我剛才說了括勺,是圖瑟俭,什么是圖?神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)就是一張圖叼旋,你在把數(shù)據(jù)喂入之前伴挚,你需要把圖建好靶衍。
只需要三行代碼
import numpy as np
import tensorflow as tf
def test_tf_session():
"""
this method playing with tensorflow 'Session',
使用tensorlfow,你首先要創(chuàng)建一個(gè)圖茎芋,然后通過會話來流動這張圖颅眶,從而
生成對應(yīng)的tensor,也就是一個(gè)個(gè)的矩陣
:return:
"""
matrix1 = tf.constant([[1, 2, 3],
[2, 3, 4]])
matrix2 = tf.constant([[3, 4, 2],
[1, 3, 4],
[3, 4, 5]])
product = tf.matmul(matrix1, matrix2)
sess = tf.Session()
result = sess.run(product)
print(result)
def test_tf_variable():
"""
這個(gè)方法示例'Variable'的作用田弥,它相當(dāng)于一個(gè)存儲器涛酗,存儲中間變量
:return:
"""
# 首先我們定義一個(gè)Variable,名字叫state,初始值是38
state = tf.Variable(38, name='state')
add_value = tf.constant(3)
new_value = tf.add(state, add_value)
update = tf.assign(state, new_value)
# 使用variable商叹,在用會話啟動它之前要初始化一下'Variable'
# 要不然tf怎么知道你設(shè)定的初始值是多少呢燕刻?
init_op = tf.initialize_all_variables()
with tf.Session() as sess:
sess.run(init_op)
sess.run(new_value)
for _ in range(3):
# 執(zhí)行這一步把state和add_value相加的值,得加到state自身
sess.run(update)
# 每一步執(zhí)行之后我們看看state的值
print(sess.run(state))
def test_tf_feed_data():
"""
Feed data進(jìn)入圖之中剖笙,入口是placeholder卵洗,相當(dāng)于占位符先把入口霸占一下,
等數(shù)據(jù)來了再從這里進(jìn)入圖之中
:return:
"""
x = tf.placeholder(tf.float32, shape=(2, 3), name='matrix1')
y = tf.placeholder(tf.float32, shape=(3, 4), name='matrix2')
product = tf.matmul(x, y)
data_x = [[1, 2, 3],
[3, 4, 2]]
data_y = [[2, 3, 4, 2],
[1, 3, 4, 2],
[2, 3, 4, 5]]
# 我們指定了兩個(gè)數(shù)據(jù)流入的入口弥咪,并且固定了形狀过蹂,如果輸入不對會報(bào)錯,
# 像這樣正確的姿勢塞進(jìn)去聚至,我們就能夠得到product這個(gè)op的值
with tf.Session() as sess:
result = sess.run(product, feed_dict={x: data_x, y: data_y})
print(result)
if __name__ == '__main__':
# test_tf_variable()
test_tf_feed_data()
很多人咋一看酷勺,臥槽,是我瞎嗎扳躬?這尼瑪哪里是三行代碼。坦报。莫方库说,我說的三行代碼就是main里面的三個(gè)函數(shù),而函數(shù)的實(shí)現(xiàn)你展示可以不用關(guān)心
第一行代碼--Variable
test_tf_variable()
第二行代碼--Session
test_tf_session()
第三行代碼--Feed
test_tf_feed_data()
后記
毫無疑問片择,恭喜你已經(jīng)入門了tensorflow啰挪。