Tensorflow:tf.shape()和x.get_shape().as_list()import tensorflow as tf import numpy as np a_array=np.a

本文详细介绍了在TensorFlow中如何使用tf.shape()获取张量的大小,并对比了tensor与ndarray在形状获取上的差异。同时,文章还探讨了tensor.get_shape()的使用方法及其返回类型,以及在session中运行这些操作的注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tf.shape()是获取张量的大小

import tensorflow as tf 
import numpy as np 
a_array=np.array([[1,2,3],[4,5,6]])
b_list=[[1,2,3],[3,4,5]]
c_tensor=tf.constant([[1,2,3],[4,5,6]]) 

with tf.Session() as sess:    
print(sess.run(tf.shape(a_array)))    
print(sess.run(tf.shape(b_list)))    
print(sess.run(tf.shape(c_tensor)))

x.get_shape().as_list()

x.get_shape(),只有tensor才可以使用这种方法,返回的是一个元组

import tensorflow as tf 
import numpy as np 
a_array=np.array([[1,2,3],[4,5,6]])
b_list=[[1,2,3],[3,4,5]]
c_tensor=tf.constant([[1,2,3],[4,5,6]]) 
print(c_tensor.get_shape())
print(c_tensor.get_shape().as_list()) 

with tf.Session() as sess:    
print(sess.run(tf.shape(a_array)))    
print(sess.run(tf.shape(b_list)))    
print(sess.run(tf.shape(c_tensor)))

可见只能用于tensor来返回shape,但是是一个元组,需要通过as_list()的操作转换成list.

不是元组进行操作的话,会报错!

如果你在上面的代码上添加上a_array.get_shape()会报如下的错误:

    print(a_array.get_shape())AttributeError: 'numpy.ndarray' object has no attribute 'get_shape'
 

下面强调一些注意点:

第一点:tensor.get_shape()返回的是元组,不能放到sess.run()里面,这个里面只能放operation和tensor;

第二点:tf.shape()返回的是一个tensor。要想知道是多少,必须通过sess.run()

 

a_array=np.array([[1,2,3],[4,5,6]])
b_list=[[1,2,3],[3,4,5]]
c_tensor=tf.constant([[1,2,3],[4,5,6]]) 
with tf.Session() as sess:    
a_array_shape=tf.shape(a_array)    
print("a_array_shape:",a_array_shape)    
print("a_array_shape:",sess.run(a_array_shape))    c_tensor_shape=c_tensor.get_shape().as_list()    
print("c_tensor_shape:",c_tensor_shape)    
#print(sess.run(c_tensor_shape)) #报错

注释掉的那个报错如下:不是tensor或者是operation。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值