tensorflow笔记:tf.shape()和(tensor)x.get_shape().as_list()

目录

1、 Tensorflow中的tf.shape()

2、 Tensor中的x.get_shape().as_list()


1、Tensorflow中的tf.shape()

先说tf.shape()很显然这个是获取张量的大小的,用法无需多说,直接上例子吧!

import tensorflow as tf
import numpy as np

a=np.array([[1,2,3],[4,5,6]])
b=[[1,2,3],[4,5,6]]
c=tf.constant([[1,2,3],[4,5,6]])

with tf.Session() as sess:
	print(sess.run(tf.shape(a)))
	print(sess.run(tf.shape(b)))
	print(sess.run(tf.shape(c)))

输出结果:

(tf14) zhangkf@Ubuntu2:~$ python o.py 
[2 3]
[2 3]
[2 3]

2、(Tensor)x.get_shape().as_list()

这个简单说明一下,x.get_shape(),只有tensor(张量)才可以使用这种方法,返回的是一个元组

import tensorflow as tf
import numpy as np

a=np.array([[1,2,3],[4,5,6]])
b=[[1,2,3],[4,5,6]]
c=tf.constant([[1,2,3],[4,5,6]])

print(c.get_shape())                   #这里返回的是一个元组
print(c.get_shape().as_list())         #返回的元组重新变回一个列表

with tf.Session() as sess:
	print(sess.run(tf.shape(a)))
	print(sess.run(tf.shape(b)))
	print(sess.run(tf.shape(c)))

输出结果:

(tf14) zhangkf@Ubuntu2:~$ clear
(tf14) zhangkf@Ubuntu2:~$ python o.py 
(2, 3)
[2, 3]
[2 3]
[2 3]
[2 3]

不是张量进行操作的话,会报错!

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

print(a_array.get_shape())    #加入这个会报错

#下面这个错误
Traceback (most recent call last):
  File "o.py", line 10, in 
    print(a.get_shape())
AttributeError: 'numpy.ndarray' object has no attribute 'get_shape'

可见,只有tensor才有这样的特权呀!

下面强调一些注意点:

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

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

import tensorflow as tf
import numpy as np
 
a=np.array([[1,2,3],[4,5,6]])
b=[[1,2,3],[3,4,5]]
c=tf.constant([[1,2,3],[4,5,6]])
 
with tf.Session() as sess:
    a_shape=tf.shape(a)
    print("a_shape:",a)
    print("a_shape:",sess.run(a_shape))

    c_shape=c.get_shape().as_list()
    print("c_shape:",c_shape)
    #print(sess.run(c_shape)) #报错

运行结果:

(tf14) zhangkf@Ubuntu2:~$ python o.py 
a_shape: [[1 2 3]
          [4 5 6]]
a_shape: [2 3]
c_shape: [2, 3]

如果你把注释掉的那个话再放出来,报错如下:很显然啊,不是tensor或者是operation。

TypeError: Fetch argument 2 has invalid type , must be a string or Tensor. (Can not convert a int into a Tensor or Operation.

 

你可能感兴趣的:(Python学习笔记)