圆月山庄资源网 Design By www.vgjia.com
我们可以使用tf.shape()获取某张量的形状张量。
import tensorflow as tf x = tf.reshape(tf.range(1000), [10, 10, 10]) sess = tf.Session() sess.run(tf.shape(x)) Out[1]: array([10, 10, 10])
我们可以使用tf.shape()在计算图中确定改变张量的形状。
high = tf.shape(x)[0] // 2 width = tf.shape(x)[1] * 2 x_reshape = tf.reshape(x, [high, width, -1]) sess.run(tf.shape(x_reshape)) Out: array([ 5, 20, 10])
我们可以使用tf.shape_n()在计算图中得到若干个张量的形状。
y = tf.reshape(tf.range(504), [7,8,9]) sess.run(tf.shape_n([x, y])) Out: [array([10, 10, 10]), array([7, 8, 9])]
我们可以使用tf.size()获取张量的元素个数。
sess.run([tf.size(x), tf.size(y)])
Out: [1000, 504]
tensor.get_shape()或者tensor.shape是无法在计算图中用于确定张量的形状。
In [20]: x.get_shape() Out[20]: TensorShape([Dimension(10), Dimension(10), Dimension(10)]) In [21]: x.get_shape()[0] Out[21]: Dimension(10) In [22]: type(x.get_shape()[0]) Out[22]: tensorflow.python.framework.tensor_shape.Dimension In [23]: x.get_shape() Out[23]: TensorShape([Dimension(10), Dimension(10), Dimension(10)]) In [24]: sess.run(x.get_shape()) --------------------------------------------------------------------------- TypeError Traceback (most recent call last) ~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in __init__(self, fetches, contraction_fn) 299 self._unique_fetches.append(ops.get_default_graph().as_graph_element( --> 300 fetch, allow_tensor=True, allow_operation=True)) 301 except TypeError as e: ~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in as_graph_element(self, obj, allow_tensor, allow_operation) 3477 with self._lock: -> 3478 return self._as_graph_element_locked(obj, allow_tensor, allow_operation) 3479 ~\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in _as_graph_element_locked(self, obj, allow_tensor, allow_operation) 3566 raise TypeError("Can not convert a %s into a %s." % (type(obj).__name__, -> 3567 types_str)) 3568 TypeError: Can not convert a TensorShapeV1 into a Tensor or Operation. During handling of the above exception, another exception occurred: TypeError Traceback (most recent call last) <ipython-input-24-de007c69e003> in <module> ----> 1 sess.run(x.get_shape()) ~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in run(self, fetches, feed_dict, options, run_metadata) 927 try: 928 result = self._run(None, fetches, feed_dict, options_ptr, --> 929 run_metadata_ptr) 930 if run_metadata: 931 proto_data = tf_session.TF_GetBuffer(run_metadata_ptr) ~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in _run(self, handle, fetches, feed_dict, options, run_metadata) 1135 # Create a fetch handler to take care of the structure of fetches. 1136 fetch_handler = _FetchHandler( -> 1137 self._graph, fetches, feed_dict_tensor, feed_handles=feed_handles) 1138 1139 # Run request and get response. ~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in __init__(self, graph, fetches, feeds, feed_handles) 469 """ 470 with graph.as_default(): --> 471 self._fetch_mapper = _FetchMapper.for_fetch(fetches) 472 self._fetches = [] 473 self._targets = [] ~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in for_fetch(fetch) 269 if isinstance(fetch, tensor_type): 270 fetches, contraction_fn = fetch_fn(fetch) --> 271 return _ElementFetchMapper(fetches, contraction_fn) 272 # Did not find anything. 273 raise TypeError('Fetch argument %r has invalid type %r' % (fetch, ~\Anaconda3\lib\site-packages\tensorflow\python\client\session.py in __init__(self, fetches, contraction_fn) 302 raise TypeError('Fetch argument %r has invalid type %r, ' 303 'must be a string or Tensor. (%s)' % --> 304 (fetch, type(fetch), str(e))) 305 except ValueError as e: 306 raise ValueError('Fetch argument %r cannot be interpreted as a ' TypeError: Fetch argument TensorShape([Dimension(10), Dimension(10), Dimension(10)]) has invalid type <class 'tensorflow.python.framework.tensor_shape.TensorShapeV1'>, must be a string or Tensor. (Can not convert a TensorShapeV1 into a Tensor or Operation.)
我们可以使用tf.rank()来确定张量的秩。tf.rank()会返回一个代表张量秩的张量,可直接在计算图中使用。
In [25]: tf.rank(x) Out[25]: <tf.Tensor 'Rank:0' shape=() dtype=int32> In [26]: sess.run(tf.rank(x)) Out[26]: 3
补充知识:tensorflow循环改变tensor的值
使用tf.concat()实现4维tensor的循环赋值
alist=[[[[1,1,1],[2,2,2],[3,3,3]],[[4,4,4],[5,5,5],[6,6,6]]],[[[7,7,7],[8,8,8],[9,9,9]],[[10,10,10],[11,11,11],[12,12,12]]]] #2,2,3,3-n,c,h,w kenel=(np.asarray(alist)*2).tolist() print(kenel) inputs=tf.constant(alist,dtype=tf.float32) kenel=tf.constant(kenel,dtype=tf.float32) inputs=tf.transpose(inputs,[0,2,3,1]) #n,h,w,c kenel=tf.transpose(kenel,[0,2,3,1]) #n,h,w,c uints=inputs.get_shape() h=int(uints[1]) w=int(uints[2]) encoder_output=[] for b in range(int(uints[0])): encoder_output_c=[] for c in range(int(uints[-1])): one_channel_in = inputs[b, :, :, c] one_channel_in = tf.reshape(one_channel_in, [1, h, w, 1]) one_channel_kernel = kenel[b, :, :, c] one_channel_kernel = tf.reshape(one_channel_kernel, [h, w, 1, 1]) encoder_output_cc = tf.nn.conv2d(input=one_channel_in, filter=one_channel_kernel, strides=[1, 1, 1, 1], padding="SAME") if c==0: encoder_output_c=encoder_output_cc else: encoder_output_c=tf.concat([encoder_output_c,encoder_output_cc],axis=3) if b==0: encoder_output=encoder_output_c else: encoder_output = tf.concat([encoder_output, encoder_output_c], axis=0) with tf.Session() as sess: print(sess.run(tf.transpose(encoder_output,[0,3,1,2]))) print(encoder_output.get_shape())
输出:
[[[[ 32. 48. 32.] [ 56. 84. 56.] [ 32. 48. 32.]] [[ 200. 300. 200.] [ 308. 462. 308.] [ 200. 300. 200.]]] [[[ 512. 768. 512.] [ 776. 1164. 776.] [ 512. 768. 512.]] [[ 968. 1452. 968.] [1460. 2190. 1460.] [ 968. 1452. 968.]]]] (2, 3, 3, 2)
以上这篇TensorFlow中如何确定张量的形状实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
标签:
TensorFlow,张量,形状
圆月山庄资源网 Design By www.vgjia.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
圆月山庄资源网 Design By www.vgjia.com
暂无评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
2024年11月02日
2024年11月02日
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章