美文网首页
tf.shape()和x.get_shape()的区别

tf.shape()和x.get_shape()的区别

作者: 求索_700e | 来源:发表于2018-12-28 22:13 被阅读0次

    转载自:https://blog.csdn.net/m0_37393514/article/details/82226754

    (1) tf.shape()

    先说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)))

    结果:

    (2)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才有这样的特权呀!

    下面强调一些注意点:

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

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

    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:

        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。

    相关文章

      网友评论

          本文标题:tf.shape()和x.get_shape()的区别

          本文链接:https://www.haomeiwen.com/subject/mfkylqtx.html