學習機器學習中遇到的一些問題

2021-08-28 00:10:08 字數 2707 閱讀 5358

本文用來記錄學習機器學習時遇到的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的時候,如果將乙個大的文字檔...