本文用來記錄學習機器學習時遇到的tensorflow框架的相關問題及python基礎語法的相關問題
1.tensor.eval()函式和session.run函式區別
假設你有個tensor t,t.eval()等價於tf.get_default_session(t),其中最主要的區別時session.run()可以再同一步獲取多個tensor值
t = tf.constant(42.0)
u = tf.constant(37.0)
tu = tf.mul(t, u)
ut = tf.mul(u, t)
with sess.as_default():
tu.eval() # runs one step
ut.eval() # runs one step
sess.run([tu, ut]) # evaluates both tensors in a single step
2.tensor.argmax()函式解釋
函式原型
tf.argmax(
input,
axis=none,
name=none,
dimension=none,
output_type=tf.int64
)
獲得輸入在制定軸的最大值的位置
例:
import tensorflow as tf
tf.reset_default_graph()
a=tf.get_variable(name='a',shape=[3,4],dtype=tf.float32,initializer=tf.random_uniform_initializer(minval=-1,maxval=1))
b=tf.argmax(a)
c=tf.argmax(input=a,dimension=0)
d=tf.argmax(input=a,dimension=1)
sess=tf.interactivesession()
sess.run(tf.initialize_all_variables())
print(sess.run(a))
print(sess.run(b))
print(sess.run(c))
print(sess.run(d))
輸出
[[-0.77440333 -0.38460183 -0.36490536 -0.16382861]
[-0.4298625 -0.38621664 0.9929168 -0.02698684]
[ 0.54207134 0.48158026 -0.51101947 -0.55545044]]
[2 2 1 1]
[2 2 1 1]
[3 2 0]
不難看出,dimension預設為列,0代表以列為軸,1代表以行為軸。
3.遇到了乙個bug
variable a already exists, disallowed. did you mean to set reuse=true or reuse=tf.auto_reuse in varscope? originally defined at:
解決方法:
在**出現tensor變數的最前面加一句
tf.reset_default_graph()
numpy.eye(n,m=none,k=0,dtype=,order='c)
這個函式是生成對角矩陣
引數介紹:
1)n:int型,表示的是輸出的行數
2)m:int型,可選項,輸出的列數,如果沒有就預設為n
3)k:int型,可選項,對角線的下標,預設為0表示的是主對角線,負數表示的是低對角,正數表示的是高對角。
4)dtype:資料的型別,可選項,返回的資料的資料型別
5)order:,可選項,也就是輸出的陣列的形式是按照c語言的行優先』c』,還是按照fortran形式的列優先『f』儲存在記憶體中
在深度學習中,此函式可以將陣列轉換為one-hot形式.
例:
labels=np.array([[1],[0],[2],[1]])
res=np.eye(3)[labels.reshape(-1)] #3代表種類數,它可以把陣列每個元素轉為向量
print(res)
輸出結果:
[[0. 1. 0.]
[1. 0. 0.]
[0. 0. 1.]
[0. 1. 0.]]
5.tf.cast()函式
此函式可以把tensor改變型別,函式原型為
tf.cast(
x,dtype,
name=none
)
引數解釋:
x:必選,你要改變型別的tensor變數
dtype:必選,目標型別
name:可選,此操作的名字
例:
import tensorflow as tf
sess=tf.session()
x = tf.constant([1.8, 2.2], dtype=tf.float32)
z=tf.cast(x,tf.int32)
print(sess.run(z))
輸出:[1 2] 學習中遇到的一些問題
1.c語言 函式前加 加 是返回指標,例如 int add add 函式返回的是乙個int型別的值 int add add 函式返回的是乙個int型別的指標 1 include 2 char repnum char str 310 main 11 2.輸出形如下面的圖形 3.switch 表示式 c...
學習docker遇到的一些問題
1 docker 容器中vim vi等命令無法使用的那些事 進入容器後,用命令更新源 apt get update 安裝 apt get install vim 2 docker hosts 對映問題 spring boot專案 是使用自定義網域名稱來 訪問註冊中心的,部署進容器裡時,需要對dock...
機器學習 wordcount的一些問題
wordcount就是hadoop上的 hello world 非常經典,弄清楚它可以快速的幫助我們理解hadoop一些相關概念和執行機制,這裡找了一篇好文,基本上把wordcount分析的非常透徹了,流程大概是這樣子的 但是還是有乙個問題,就是當hadoop在split的時候,如果將乙個大的文字檔...