Python TensorFlow,张量的形状,静态形状与动态形状,set_shape(),reshape()

TensorFlow中,张量具有静态形状和动态形状
静态形状:创建一个张量或者由操作推导出一个张量时,初始状态的形状
    tf.Tensor.get_shape:获取静态形状
    tf.Tensor.set_shape():更新Tensor对象的静态形状,通常用于在不能直接推断的情况下
动态形状:一种描述原始张量在执行过程中的形状(动态变化)
    tf.reshape:创建一个具有不同动态形状的新张量

demo.py(张量的形状,静态形状,动态形状,set_shape(),reshape()):

import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'  # 设置警告级别


# 张量的形状分为静态形状和动态形状
# 对于静态形状来说,一旦张量形状固定了,就不能再次设置静态形状了,并且不能跨维度修改 1D->1D 2D->2D
# 动态形状会创建一个新的张量,改变动态形状时一定要注意元素数量要匹配  1D->2D  1D->3D

plt = tf.placeholder(tf.float32, [None, 2])
print(plt)  # Tensor("Placeholder:0", shape=(?, 2), dtype=float32)

# set_shape() 修改静态形状(只能修改一次,且不能跨维度修改),固定静态形状
plt.set_shape([3, 2])
print(plt)  # Tensor("Placeholder:0", shape=(3, 2), dtype=float32)

# plt.set_shape([2, 3]) # 静态形状只能修改一次,不能再次修改


# reshape() 修改动态形状会创建一个新的张量,可以跨维度修改,但元素数量要匹配
plt_reshape = tf.reshape(plt, [2, 3])
print(plt_reshape)  # Tensor("Reshape:0", shape=(2, 3), dtype=float32)

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/88092022