tensorflow新手,僅供參考
在tensorflow中,tf.tensor物件是資料物件的控制代碼。資料物件包含輸出的常量和變數,以及計算節點的輸出資料物件。
所有python語言中的常見型別的資料需要轉化為tensorflow中的tensor物件後,才能使用tensorflow框架中的計算結點。
tensor物件可以儲存任務維度的張量。圖中參與計算的資料都是tensor物件。
**示例:
import tensorflow as tf
data=[[
1,2]
,[3,
4]]#定義變數tensor
a_tensor=tf.variable(data,name=
'a')
#定義常量tensor
b_tensor=tf.constant(data,name=
'b')
#根據tensor名稱獲取tensor
a_temp=tf.get_default_graph(
).get_tensor_by_name(
'a:0'
)b_temp=tf.get_default_graph(
).get_tensor_by_name(
'b:0'
)#將查詢到的做矩陣乘法
c_tensor=tf.matmul(a_temp,b_temp)
#列印查詢到的tensor物件
print
('tensor named "a:0":'
,a_temp)
print
('tensor named "b:0":'
,b_temp)
with tf.session(
)as sess:
sess.run(tf.global_variables_initializer())
a_ver,b_ver,c_ver=sess.run(
[a_temp,b_temp,c_tensor]
)print
('\n tensor named:"a:0" value:\n'
,a_ver)
print
('\n tensor named:"b:0" value:\n'
,b_ver)
print
('\n matmul output:\n'
,c_ver)
輸出結果:
tensor named "a:0"
: tensor(
"a:0"
, shape=(2
,2), dtype=int32_ref)
tensor named "b:0"
: tensor(
"b:0"
, shape=(2
,2), dtype=int32)
tensor named:
"a:0" value:[[
12][
34]]
tensor named:
"b:0" value:[[
12][
34]]
matmul output:[[
710][
1522
]]
在tensorflow中,函式tf.convert_to_tensor用於將python的基本型別資料轉化為tensor物件。(只有部分資料型別可轉換,如:int, float, string, list以及numpy庫中的陣列)
#tf.convert_to_tensor的原型
tf.convert_to_tensor(
value,
dtype=
none
, name=
none
, preferred_dtype=
none
)
名稱
含義value
需要轉為tensor物件的資料
dtype
指定tensor物件的資料型別,如果沒有,則根據value的值來判斷
name
轉化成tensor物件後的名稱
preferred_dtype
返回的tensor物件指定備選的資料型別,如果dtype為none,該引數才生效。如果實際資料型別不可能轉為preferred_dtype 指定的型別,則該引數無效
example:
import tensorflow as tf
#定義python的字串物件
str_py=
'hello world'
#將字串轉化為tensor物件
str_tf=tf.convert_to_tensor(str_py,dtype=tf.string)
print
('str_tf='
,str_tf)
with tf.session(
)as sess:
#tensor 物件取出來的是字串對應的位元組物件
str_bytes=sess.run(str_tf)
str_v=str_bytes.decode(
)print
(str_v)
output:
str_tf= tensor(
"const:0"
, shape=()
, dtype=string)
hello world
在tensorflow中,函式tf.py_func用於將tensor的基本型別資料轉化為python物件,tensor物件作為引數傳入py_func函式中,python函式的返回值又會自動轉化為tensor物件,是乙個nice的函式!
#tf.py_func的原型
py_func(
func,
inp,
tout,
stateful=
true
, name=
none
)
名稱
含義func
python函式型別,指定需要執行的python函式
inplist型別,list裡面存放時是tensor物件,用於傳入func中
tout
list型別或者是單個物件,存放的是tensorflow中的型別,用於描述func函式返回資料轉化為tensor物件後的資料型別
stateful
bool型別,預設為true,如果設定為true,則該函式被認為是與狀態有關的。如果函式與狀態無關,則相同的輸入會產生相同的輸出
name
當前的operation的名字
example:
import tensorflow as tf
defmy_add_func
(a,b)
:#檢視傳入的引數的資料型別
print
('type(a)='
,type
(a))
print
('type(b)='
,type
(b))
c=a+b
return c
a_tensor=tf.constant([[
1,1]
,[1,
1]],dtype=tf.int64)
b_tensor=tf.constant([[
2,2]
,[2,
2]],dtype=tf.int64)
c_tensor=tf.py_func(my_add_func,
[a_tensor,b_tensor]
,tf.int64)
with tf.session(
)as sess:
c=sess.run(c_tensor)
print
(c)
output:
type
(a)=
<
class
'numpy.ndarray'
>
type
(b)=
<
class
'numpy.ndarray'
>[[
33][
33]]
Pytorch Tensor和tensor的區別
在pytorch中,tensor和tensor都能用於生成新的張量 a torch.tensor 1 2 a tensor 1 2.a torch.tensor 1 2 a tensor 1 2 首先,我們需要明確一下,torch.tensor 是python類,更明確地說,是預設張量型別torch...
Variable和tensor的計算
變數在torch中是建立乙個計算圖,但是相比較tensorflow和theano中的靜態圖,它是動態的,torch沒有placeholder,torch只能給計算圖傳遞變數 import numpy as np import torch from torch.autograd import vari...
Pytorch之Tensor和Numpy之間的轉換
最重要的區別t.tensor和t.tensor 不論輸入的型別是什麼,t.tensor 都會進行資料拷貝,不會共享記憶體 t.tensor 與numpy共享記憶體,但當numpy的資料型別和tensor的型別不一樣的時候,資料會被複製,不會共享記憶體。可使用t.from numpy 或者t.deta...