環(huán)境:Ubuntu 14.04.1 LTS (GNU/Linux 3.13.0-105-generic x86_64)
1 TensorFlow 相關(guān)函數(shù)理解
1.1 tf.truncated_normal
truncated_normal(
shape,
mean=0.0,
stddev=1.0,
dtype=tf.float32,
seed=None,
name=None
)
功能說明:
產(chǎn)生截斷正態(tài)分布隨機數(shù)彩匕,取值范圍為[mean - 2 * stddev, mean + 2 * stddev]群发。
示例代碼:
現(xiàn)在在 /home/ubuntu 目錄下創(chuàng)建源文件 truncated_normal.py:
truncated_normal.py
#!/usr/bin/python
import tensorflow as tf
initial = tf.truncated_normal(shape=[3,3], mean=0, stddev=1)
print tf.Session().run(initial)
然后執(zhí)行:
python /home/ubuntu/truncated_normal.py
執(zhí)行結(jié)果:
[[-0.18410809-1.285927770.58813173]
[-1.58745313 -0.48672566 -0.27244243]
[-1.458331470.513067361.20532846]]
將得到一個取值范圍 [-2, 2] 的 3 * 3 矩陣鸦列,可以嘗試修改源代碼看看輸出結(jié)果有什么變化。
1.2 tf.constant
constant(
value,
dtype=None,
shape=None,
name='Const',
verify_shape=False
)
功能說明:
根據(jù) value 的值生成一個 shape 維度的常量張量
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?constant.py垄惧,內(nèi)容可參考:
constant.py
#!/usr/bin/python
import tensorflow as tf
import numpy as np
a = tf.constant([1,2,3,4,5,6],shape=[2,3])
b = tf.constant(-1,shape=[3,2])
c = tf.matmul(a,b)
e = tf.constant(np.arange(1,13,dtype=np.int32),shape=[2,2,3])
f = tf.constant(np.arange(13,25,dtype=np.int32),shape=[2,3,2])
g = tf.matmul(e,f)
with tf.Session() as sess:
? ? print sess.run(a)
? ? print("##################################")
? ? print sess.run(b)
? ? print("##################################")
? ? print sess.run(c)
? ? print("##################################")
? ? print sess.run(e)
? ? print("##################################")
? ? print sess.run(f)
? ? print("##################################")
? ? print sess.run(g)
然后執(zhí)行:
python /home/ubuntu/constant.py
執(zhí)行結(jié)果:
[[1 2 3]
[4 5 6]]
##################################
[[-1 -1]
[-1 -1]
[-1 -1]]
##################################
[[-6 -6]
[-15 -15]]
##################################
[[[1 2 3]
[ 4 5 6]]
[[ 7 8 9]
[10 11 12]]]
##################################
[[[13 14]
[15 16]
[17 18]]
[[19 20]
[21 22]
[23 24]]]
##################################
[[[94 100]
[229 244]]
[[508 532]
[697 730]]]
a: 2x3 維張量;
b: 3x2 維張量绰寞;
c: 2x2 維張量到逊;
e: 2x2x3 維張量;
f: 2x3x2 維張量滤钱;
g: 2x2x2 維張量觉壶。
可以嘗試修改源代碼看看輸出結(jié)果有什么變化。
1.3 tf.placeholder
placeholder(
dtype,
shape=None,
name=None
)
功能說明:
是一種占位符件缸,在執(zhí)行時候需要為其提供數(shù)據(jù)
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?placeholder.py铜靶,內(nèi)容可參考:
placeholder.py
#!/usr/bin/python
import tensorflow as tf
import numpy as np
x = tf.placeholder(tf.float32,[None,10])
y = tf.matmul(x,x)
with tf.Session() as sess:
? ? rand_array = np.random.rand(10,10)
? ? print sess.run(y,feed_dict={x:rand_array})
然后執(zhí)行:
python /home/ubuntu/placeholder.py
執(zhí)行結(jié)果:
[[1.81712103 ?2.02877522 ?1.68924046 2.40462661 ?1.90574181 ?2.21769357
1.66864204 ?1.87491691 ?2.32046914 ?2.07164645]
[ 3.18995905 ?2.80489087 ?2.53446984 ?2.93795609 ?2.35939479 ?2.61397004
1.47369146 ?1.69601274 ?2.96881104 ?2.80005288]
[ 3.40027285 ?3.17128634 ?2.83247375 ?3.58863354 ?2.67104673 ?2.81708789
2.04706836 ?2.4437325 ?3.10964417 ?3.03987789]
[ 2.04807019 ?2.11296868 ?1.85848451 ?2.26381588 ?2.00105739 ?2.1591928
1.59371364 ?1.69079185 ?2.35918951 ?2.3390758 ]
[ 3.14326477 ?3.03518987 ?2.70114732 ?3.35116243 ?2.97751141 ?3.10402942
2.12285256 ?2.45907426 ?3.64020634 ?3.09404778]
[ 2.46236205 ?2.59506202 ?2.11775351 ?2.43848658 ?2.24290538 ?2.07725525
1.73363113 ?1.79471815 ?2.22352362 ?2.47508812]
[ 2.3489728 ?3.25824308 ?2.53069353 ?3.52486014 ?3.3552053 ?3.18628955
2.6079123 ?2.44158649 ?3.47814059 ?3.41102791]
[ 2.39285374 ?2.33928251 ?2.19442534 ?2.28283715 ?1.99198937 ?1.68016291
1.41813767 ?2.16835332 ?1.86814547 ?1.73498607]
[ 2.71498179 ?2.88635182 ?2.35225129 ?3.11072111 ?2.72122979 ?2.57475829
2.12802029 ?2.54610658 ?2.97226429 ?2.80705166]
[ 2.99051809 ?3.2901628 ?2.51092815 ?3.67744827 ?2.57051396 ?2.53983688
2.18044734 ?2.18324852 ?2.58032012 ?3.19048524]]
輸出一個 10x10 維的張量。也可以嘗試修改源代碼看看輸出結(jié)果有什么變化他炊。
1.4 tf.nn.bias_add
bias_add(
value,
bias,
data_format=None,
name=None
)
功能說明:
將偏差項 bias 加到 value 上面争剿,可以看做是 tf.add 的一個特例已艰,其中 bias 必須是一維的,并且維度和 value的最后一維相同蚕苇,數(shù)據(jù)類型必須和 value 相同哩掺。
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?bias_add.py,內(nèi)容可參考:
bias_add.py
#!/usr/bin/python
import tensorflow as tf
import numpy as np
a = tf.constant([[1.0, 2.0],[1.0, 2.0],[1.0, 2.0]])
b = tf.constant([2.0,1.0])
c = tf.constant([1.0])
sess = tf.Session()
print sess.run(tf.nn.bias_add(a, b))
#print sess.run(tf.nn.bias_add(a,c)) error
print("##################################")
print sess.run(tf.add(a, b))
print("##################################")
print sess.run(tf.add(a, c))
然后執(zhí)行:
python /home/ubuntu/bias_add.py
執(zhí)行結(jié)果:
[[3.3.]
[ 3.3.]
[ 3.3.]]
##################################
[[3.3.]
[ 3.3.]
[ 3.3.]]
##################################
[[2.3.]
[ 2.3.]
[ 2.3.]]
3 個 3x2 維張量涩笤。也可以嘗試修改源代碼看看輸出結(jié)果有什么變化嚼吞。
1.5 tf.reduce_mean
reduce_mean(
input_tensor,
axis=None,
keep_dims=False,
name=None,
reduction_indices=None
)
功能說明:
計算張量 input_tensor 平均值
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?reduce_mean.py,內(nèi)容可參考:
reduce_mean.py
#!/usr/bin/python
import tensorflow as tf
import numpy as np
initial = [[1.,1.],[2.,2.]]
x = tf.Variable(initial,dtype=tf.float32)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
? ? sess.run(init_op)
? ? print sess.run(tf.reduce_mean(x))
? ? print sess.run(tf.reduce_mean(x,0)) #Column
? ? print sess.run(tf.reduce_mean(x,1)) #row
然后執(zhí)行:
python /home/ubuntu/reduce_mean.py
執(zhí)行結(jié)果:
1.5
[ 1.51.5]
[ 1.2.]
也可以嘗試修改源代碼看看輸出結(jié)果有什么變化辆它。
1.6 tf.squared_difference
squared_difference(
x,
y,
name=None
)
功能說明:
計算張量 x誊薄、y 對應(yīng)元素差平方
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?squared_difference.py,內(nèi)容可參考:
squared_difference.py
#!/usr/bin/python
import tensorflow as tf
import numpy as np
initial_x = [[1.,1.],[2.,2.]]
x = tf.Variable(initial_x,dtype=tf.float32)
initial_y = [[3.,3.],[4.,4.]]
y = tf.Variable(initial_y,dtype=tf.float32)
diff = tf.squared_difference(x,y)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
? ? sess.run(init_op)
? ? print sess.run(diff)
然后執(zhí)行:
python /home/ubuntu/squared_difference.py
執(zhí)行結(jié)果:
[[ 4.4.]
[ 4.4.]]
也可以嘗試修改源代碼看看輸出結(jié)果有什么變化锰茉。
1.7 tf.square
square(
x,
name=None
)
功能說明:
計算張量對應(yīng)元素平方
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?square.py呢蔫,內(nèi)容可參考:
square.py
#!/usr/bin/python
import tensorflow as tf
import numpy as np
initial_x = [[1.,1.],[2.,2.]]
x = tf.Variable(initial_x,dtype=tf.float32)
initial_y = [[3.,3.],[4.,4.]]
y = tf.Variable(initial_y,dtype=tf.float32)
diff = tf.squared_difference(x,y)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
? ? sess.run(init_op)
? ? print sess.run(diff)
然后執(zhí)行:
python /home/ubuntu/square.py
執(zhí)行結(jié)果:
[[ 1.1.]
[ 4.4.]]
也可以嘗試修改源代碼看看輸出結(jié)果有什么變化。
2 TensorFlow 相關(guān)類理解
2.1 tf.Variable
__init__(
initial_value=None,
trainable=True,
collections=None,
validate_shape=True,
caching_device=None,
name=None,
variable_def=None,
dtype=None,
expected_shape=None,
import_scope=None
)
功能說明:
維護圖在執(zhí)行過程中的狀態(tài)信息飒筑,例如神經(jīng)網(wǎng)絡(luò)權(quán)重值的變化片吊。
示例代碼:
現(xiàn)在在?/home/ubuntu?目錄下創(chuàng)建源文件?Variable.py,內(nèi)容可參考:
Variable.py
#!/usr/bin/python
import tensorflow as tf
initial = tf.truncated_normal(shape=[10,10],mean=0,stddev=1)
W = tf.Variable(initial)
list = [[1.,1.],[2.,2.]]
X = tf.Variable(list,dtype=tf.float32)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
? ? sess.run(init_op)
? ? print("##################(1)################")
? ? print sess.run(W)
? ? print("##################(2)################")
? ? print sess.run(W[:2,:2])
? ? op = W[:2,:2].assign(22.*tf.ones((2,2)))
? ? print("###################(3)###############")
? ? print sess.run(op)
? ? print("###################(4)###############")
? ? print (W.eval(sess)) #computes and returnsthe value of this variable
? ? print("####################(5)##############")
? ? print (W.eval())#Usage with the default session
? ? print("#####################(6)#############")
? ? print W.dtype
? ? print sess.run(W.initial_value)
? ? print sess.run(W.op)
? ? print W.shape
? ? print("###################(7)###############")
? ? print sess.run(X)
然后執(zhí)行:
python /home/ubuntu/Variable.py
執(zhí)行結(jié)果:
##################(1)################
[[ 0.56087822? 0.32767066? 1.24723649 -0.38045949 -1.58120871? 0.61508512? -0.50005329? 0.557872? ? 0.24264131? 1.15695083]
[ 0.8403486? 0.14245604 -1.13870573? 0.2471588? 0.48664871? 0.89047027? 1.03071976? 1.1539737? -0.64689875 -0.87872595]
[-0.09499338? 0.40910682? 1.70955396 -1.12553477? 0.58261496? 0.27552807? 0.9310683? -0.80871385 -0.10735693 -1.08375466]
[-0.62496728 -0.26538777? 0.07361894 -0.44500601? 0.58208632 -1.08835173? -1.80241001 -1.10108757 -0.00228581? 1.81949258]
[-1.56699359? 1.59961379? 1.14145374 -0.41384494 -1.24469018 -1.04554486? 0.30459064 -1.59272766 -0.20161593? 0.02574082]
[-0.00295581? 0.4494803? -0.09411573? 0.85826468? 0.01789743 -0.33853438? 0.21242785 -0.00592159? 0.20592701 -0.61374348]
[ 1.73881531 -0.38042647? 0.460399? -1.6453017? -0.58561307 -0.7130214? 0.32697856 -0.84689331 -1.15418518? 1.21276581]
[-1.15040958? 0.88829482? 0.73727763? 0.63111001? 0.90698457 -0.33168671? 0.21835616 -0.26278856? 0.63736057 -0.4095172 ]
[-1.20656824 -0.6755206? -0.21640387 -0.03773152 -0.1836649? -1.38785648? -0.48950577? 0.81531078? 0.1250588? -0.15474565]
[-0.46234027 -0.32404706 -0.3527672? 0.70526761? 0.2378609? -0.56674719? 0.47251439? 1.03810799? 0.34087342? 0.21140042]]
##################(2)################
[[ 0.56087822? 0.32767066] [ 0.8403486? 0.14245604]]
###################(3)###############
[[? 2.20000000e+01? 2.20000000e+01? 1.24723649e+00? -3.80459487e-01? -1.58120871e+00? 6.15085125e-01? -5.00053287e-01? 5.57871997e-01? ? 2.42641315e-01? 1.15695083e+00]
[? 2.20000000e+01? 2.20000000e+01? -1.13870573e+00? 2.47158796e-01? ? 4.86648709e-01? 8.90470266e-01? 1.03071976e+00? 1.15397370e+00? -6.46898746e-01? -8.78725946e-01]
[ -9.49933752e-02? 4.09106821e-01? 1.70955396e+00? -1.12553477e+00? ? 5.82614958e-01? 2.75528073e-01? 9.31068301e-01? -8.08713853e-01? -1.07356928e-01? -1.08375466e+00]
[ -6.24967277e-01? -2.65387774e-01? 7.36189410e-02? -4.45006013e-01? ? 5.82086325e-01? -1.08835173e+00? -1.80241001e+00? -1.10108757e+00? -2.28581345e-03? 1.81949258e+00]
[ -1.56699359e+00? 1.59961379e+00? 1.14145374e+00? -4.13844943e-01? -1.24469018e+00? -1.04554486e+00? 3.04590642e-01? -1.59272766e+00? -2.01615930e-01? 2.57408191e-02]
[ -2.95581389e-03? 4.49480295e-01? -9.41157266e-02? 8.58264685e-01? ? 1.78974271e-02? -3.38534385e-01? 2.12427855e-01? -5.92159014e-03? ? 2.05927014e-01? -6.13743484e-01]
[? 1.73881531e+00? -3.80426466e-01? 4.60399002e-01? -1.64530170e+00? -5.85613072e-01? -7.13021398e-01? 3.26978564e-01? -8.46893311e-01? -1.15418518e+00? 1.21276581e+00]
[ -1.15040958e+00? 8.88294816e-01? 7.37277627e-01? 6.31110013e-01? ? 9.06984568e-01? -3.31686705e-01? 2.18356162e-01? -2.62788564e-01? ? 6.37360573e-01? -4.09517199e-01]
[ -1.20656824e+00? -6.75520599e-01? -2.16403872e-01? -3.77315208e-02? -1.83664903e-01? -1.38785648e+00? -4.89505768e-01? 8.15310776e-01? ? 1.25058800e-01? -1.54745653e-01]
[ -4.62340266e-01? -3.24047059e-01? -3.52767199e-01? 7.05267608e-01? ? 2.37860903e-01? -5.66747189e-01? 4.72514391e-01? 1.03810799e+00? ? 3.40873420e-01? 2.11400419e-01]]
###################(4)###############
[[? 2.20000000e+01? 2.20000000e+01? 1.24723649e+00? -3.80459487e-01? -1.58120871e+00? 6.15085125e-01? -5.00053287e-01? 5.57871997e-01? ? 2.42641315e-01? 1.15695083e+00]
[? 2.20000000e+01? 2.20000000e+01? -1.13870573e+00? 2.47158796e-01? ? 4.86648709e-01? 8.90470266e-01? 1.03071976e+00? 1.15397370e+00? -6.46898746e-01? -8.78725946e-01]
[ -9.49933752e-02? 4.09106821e-01? 1.70955396e+00? -1.12553477e+00? ? 5.82614958e-01? 2.75528073e-01? 9.31068301e-01? -8.08713853e-01? -1.07356928e-01? -1.08375466e+00]
[ -6.24967277e-01? -2.65387774e-01? 7.36189410e-02? -4.45006013e-01? ? 5.82086325e-01? -1.08835173e+00? -1.80241001e+00? -1.10108757e+00? -2.28581345e-03? 1.81949258e+00]
[ -1.56699359e+00? 1.59961379e+00? 1.14145374e+00? -4.13844943e-01? -1.24469018e+00? -1.04554486e+00? 3.04590642e-01? -1.59272766e+00? -2.01615930e-01? 2.57408191e-02]
[ -2.95581389e-03? 4.49480295e-01? -9.41157266e-02? 8.58264685e-01? ? 1.78974271e-02? -3.38534385e-01? 2.12427855e-01? -5.92159014e-03? ? 2.05927014e-01? -6.13743484e-01]
[? 1.73881531e+00? -3.80426466e-01? 4.60399002e-01? -1.64530170e+00? -5.85613072e-01? -7.13021398e-01? 3.26978564e-01? -8.46893311e-01? -1.15418518e+00? 1.21276581e+00]
[ -1.15040958e+00? 8.88294816e-01? 7.37277627e-01? 6.31110013e-01? ? 9.06984568e-01? -3.31686705e-01? 2.18356162e-01? -2.62788564e-01? ? 6.37360573e-01? -4.09517199e-01]
[ -1.20656824e+00? -6.75520599e-01? -2.16403872e-01? -3.77315208e-02? -1.83664903e-01? -1.38785648e+00? -4.89505768e-01? 8.15310776e-01? ? 1.25058800e-01? -1.54745653e-01]
[ -4.62340266e-01? -3.24047059e-01? -3.52767199e-01? 7.05267608e-01? ? 2.37860903e-01? -5.66747189e-01? 4.72514391e-01? 1.03810799e+00? ? 3.40873420e-01? 2.11400419e-01]]
####################(5)##############
[[? 2.20000000e+01? 2.20000000e+01? 1.24723649e+00? -3.80459487e-01? -1.58120871e+00? 6.15085125e-01? -5.00053287e-01? 5.57871997e-01? ? 2.42641315e-01? 1.15695083e+00]
[? 2.20000000e+01? 2.20000000e+01? -1.13870573e+00? 2.47158796e-01? ? 4.86648709e-01? 8.90470266e-01? 1.03071976e+00? 1.15397370e+00? -6.46898746e-01? -8.78725946e-01]
[ -9.49933752e-02? 4.09106821e-01? 1.70955396e+00? -1.12553477e+00? ? 5.82614958e-01? 2.75528073e-01? 9.31068301e-01? -8.08713853e-01? -1.07356928e-01? -1.08375466e+00]
[ -6.24967277e-01? -2.65387774e-01? 7.36189410e-02? -4.45006013e-01? ? 5.82086325e-01? -1.08835173e+00? -1.80241001e+00? -1.10108757e+00? -2.28581345e-03? 1.81949258e+00]
[ -1.56699359e+00? 1.59961379e+00? 1.14145374e+00? -4.13844943e-01? -1.24469018e+00? -1.04554486e+00? 3.04590642e-01? -1.59272766e+00? -2.01615930e-01? 2.57408191e-02]
[ -2.95581389e-03? 4.49480295e-01? -9.41157266e-02? 8.58264685e-01? ? 1.78974271e-02? -3.38534385e-01? 2.12427855e-01? -5.92159014e-03? ? 2.05927014e-01? -6.13743484e-01]
[? 1.73881531e+00? -3.80426466e-01? 4.60399002e-01? -1.64530170e+00? -5.85613072e-01? -7.13021398e-01? 3.26978564e-01? -8.46893311e-01? -1.15418518e+00? 1.21276581e+00]
[ -1.15040958e+00? 8.88294816e-01? 7.37277627e-01? 6.31110013e-01? ? 9.06984568e-01? -3.31686705e-01? 2.18356162e-01? -2.62788564e-01? ? 6.37360573e-01? -4.09517199e-01]
[ -1.20656824e+00? -6.75520599e-01? -2.16403872e-01? -3.77315208e-02? -1.83664903e-01? -1.38785648e+00? -4.89505768e-01? 8.15310776e-01? ? 1.25058800e-01? -1.54745653e-01]
[ -4.62340266e-01? -3.24047059e-01? -3.52767199e-01? 7.05267608e-01? ? 2.37860903e-01? -5.66747189e-01? 4.72514391e-01? 1.03810799e+00? ? 3.40873420e-01? 2.11400419e-01]]
#####################(6)#############
<dtype: 'float32_ref'>
[[ 1.81914055 -0.4915559? -0.15831701 -0.88427407 -1.07733405 -0.60749137 ?1.66635537 -1.72299039 -1.61444342? 0.27295882]
[ 0.446365? ? 0.5297941? 0.9737168? -0.50106817 -1.59801197? 1.08469987 ?-0.10664631? 0.08602872 -1.16334164 -0.31328002]
[ 1.02102256? 0.84310216 -1.63820982 -0.37840167? 1.2725147? -1.46472263? 0.81902218? 0.70780081? 0.32180747 -0.22242352]
[-0.76061416? 0.06686125? 1.22337008 -0.76162207? 0.26712251 -0.184366? -0.18723577 -1.27243066? 1.1201812? 0.74929941]
[ 1.55394351? 0.95762426 -0.77478319 -0.62725532? 0.99874109? 0.11631405? 0.55721915 -1.99805415 -1.81725216 -0.33845708]
[ 0.38020468 -0.22800203? 1.18337238 -0.05378164? 0.50396085 -1.87139273? -0.09195592 -1.9437803? 0.19355652? 0.75287497]
[ 0.87766737 -0.58997762? 1.7898128? 1.15790749? 1.89991117 -0.86276245? -0.55173373? 0.52809429? 1.03385186 -0.17748916]
[ 0.85077554? 0.69927084 -0.70190752 -0.09315278 -0.05869755? 0.61413532? -0.18304662? 1.41501033? 0.49717629? 1.04668236]
[-0.03881529 -0.64575118 -0.99053252 -0.99590522? 0.13150445? 1.85600221? -0.12806618 -0.80717343 -1.21601212 -0.819583? ]
[-0.17798649? 0.38206637? 0.92168695? 1.59679687 -0.70975852 -1.37671721 ?1.63708949 -0.1433745? -1.37151611? 0.24576309]]
None
(10, 10)
###################(7)###############
[[ 1.? 1.]
[ 2.? 2.]]
3 完成
到此协屡,我們大致了解了TensorFlow相關(guān)API的含義和用法俏脊。
以上。