TensorFlow的介绍
TensorFlow新手,仅供参考
文章目录
- TensorFlow的介绍
- 一、tensor对象
- 1.啥是tensor对象
- 2.Python对象转为tensor对象
- 3.tensor对象转为Python对象
一、tensor对象
在TensorFlow中,tf.tensor对象是数据对象的句柄。数据对象包含输出的常量和变量,以及计算节点的输出数据对象。
所有Python语言中的常见类型的数据需要转化为TensorFlow中的tensor对象后,才能使用TensorFlow框架中的计算结点。
1.啥是tensor对象
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:
[[1 2]
[3 4]]
Tensor named:"B:0" value:
[[1 2]
[3 4]]
Matmul output:
[[ 7 10]
[15 22]]
2.Python对象转为tensor对象
在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
3.tensor对象转为Python对象
在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函数 |
inp | list类型,list里面存放时是Tensor对象,用于传入func中 |
Tout | list类型或者是单个对象,存放的是tensorflow中的类型,用于描述func函数返回数据转化为tensor对象后的数据类型 |
stateful | bool类型,默认为True,如果设置为True,则该函数被认为是与状态有关的。如果函数与状态无关,则相同的输入会产生相同的输出 |
name | 当前的operation的名字 |
example:
import tensorflow as tf
def my_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'>
[[3 3]
[3 3]]