TensorFlow中节点(constant、placeholder、Variable)和张量(tensor)

一、节点

1、TensorFlow中相关概念表:

这里写图片描述

2、节点概念

TensorFlow用图来表示相关计算任务,图中的节点称为operation,缩写成op。一个节点获得0个或者多个张量(tensor)。图必须会在会话(Session)中被启动,会话将图的节点(op)分发到CPU或GPU之类的设备上,同时提供执行节点(op)的方法,这些方法执行后,将产生的张量(tensor)返回。

3、constant(常量)

constant是tensorflow的常量节点,通过constant方法创建,其是计算图中的起始节点,是传入数据。

创建方式:
cons = tf.constant(value=[1,2],dtype=tf.float32,shape=(1,2),name='testConstant',verify_shape=False)
参数说明:

value:初始值,必填,必须是一个张量(1或[1,2,3]或[[1,2,3],[2,2,3]]或……)。
dtype:数据类型,选填,默认为value的数据类型,传入参数为tensotflow下的枚举值(float32,float64….)。
shape:数据形状,选填,默认为value的shape,设置时不得比value小,可以比value阶数,纬度更高,超过部分按value提供最后一个数字填充。
name:常量,选填,默认值不重复,根据创建顺序为(Const,Const_1,Const_2…….)。
verify_shape:是否验证value的shape和指定shape相符,若设为True则进行验证,不相符时会抛出异常。

import tensorflow as tf
#shape:数据形状,选填,默认为value的shape,设置时不得比value小,可以比value阶数、维度更高,超过部分按value提供最后一个数字填充
constatnValue = tf.constant([1,2,3],shape=[2,3])

#创建一个会话
session = tf.Session()
print(session.run(constatnValue))

#关闭会话
session.close()

4、placeholder(占位符)

placeholder是Tensorflow的占位符节点,由placeholder创建,也是一种常量。是由用户在调用run方法时传递的,也可以将placeholder理解为一种形参。

创建方式:
x = tf.placeholder(dtype=tf.float32,shape=[144,10],name = 'x')
参数说明:

dtype:数据类型,必填,默认为value的数据类型,传入参数为tensorflow下的枚举值(float32,float64…..)。
shape:数据类型,选填,不填则随传入数据的形状自行变动,可以在多次调用中传入不同形状的数据。
name:常量名,选填,默认值不重复,根据创建顺序为(Placeholder,Placeholder_1,Placeholder_2…….).

示例代码:
#placeholder的测试
import tensorflow as tf
import numpy.random as random

#定义两个placeholder
#占位符shape不设时会按传入参数自行匹配
placeholder1 = tf.placeholder(tf.float32)
placeholder2 = tf.placeholder(tf.float32)

#定义数据流图,matmul函数必须对应的矩阵必须是第一个矩阵的列数 = 第二个矩阵的行数
op1 = tf.matmul(placeholder1,placeholder2)

#通过传入初始化的常量给placeholder赋值
constant1 = tf.constant(random.rand(4,5))
constant2 = tf.constant(random.rand(5,5))

with tf.Session() as session:
    print(session.run(op1,{placeholder1:session.run(constant1),placeholder2:session.run(constant2)}))
    #也可以直接传图张量赋值
    print(session.run(op1,{placeholder1:random.rand(2,3),placeholder2:random.rand(3,4)}))

5、Variable(变量)

variable是tensorflow的变量节点,通过Variable方法创建,并且需要传递初始值,在使用前需要通过tensorflow方法进行初始化。

创建方式:
  v1 = tf.Variable(tf.zeros([3, 10]), dtype=tf.float64, name='v1')

二、张量(tensor)

1、概念

张量表示从向量空间到实数域的多重线性映射。在TensorFlow中用tensor数据结构来表示所有的数据,计算图中,操作间传递的数据都是tensor。

2、张量的阶和维数(shape)

在TensorFlow中,张量的维数被描述为“阶”,张量以list形式存储。list中有几重中括号,对应的张量就表示几阶。
如test = [[1,2,3],[1,2,3],[1,2,3]],test就是一个二阶张量。一阶张量,相当于一个向量;二阶张量,相当于一个矩阵。

例如,t=[ [1,2,3],[4,5,6],[7,8,9] ]来说,它的shape==>[3,3],shape可以理解成:当脱去最外层的一对中括号后,里面有3个小list,然后每个小list里又有3个元素,所以该张量的shape==>[3,3]。

如[ [1,2,3],[4,5,6] ] 的shape=[2,3](因为当脱去最外层的一对中括号后,里面有2个小list,然后每个小list里又有3个元素,所以该张量的shape==>[2,3]。

又如,[ [ [ [ 2 ], [ 2 ] ] , [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] ] , [ [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] ] , [ [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] ] , [ [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] , [ [ 2 ] , [ 2 ] ] ] ]的shape==>[4,3,2,1] (因为当脱去最外层的一对中括号后,里面有4个第二大的list,每个第二大的list里又有3个第三大的list,每个第三大的list里有2个第四大的list,每个第四大的list里有1个元素,所以该张量的shape==>[4,3,2,1]。

3、获得TensorFlow中Tensor类型的维度信息

tf.shape(tensor_name)
tf.rank(tensor_name)

三、参考资料

1、https://blog.csdn.net/dd864140130/article/details/71774229
2、https://blog.csdn.net/u012196371/article/details/71036801
3、https://www.cnblogs.com/Vulpers/p/7809276.html

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值