生成张量
import tensorflow as tf
# 创建值全为0的张量
tensor_zeros = tf.zeros(shape=[2, 3], # 两行三列
dtype="float32") # 类型
# 创建值全为1的张量
tensor_ones = tf.ones(shape=[2, 3], dtype="float32")
# 创建正态分布随机张量
tensor_nd = tf.random_normal(shape=[10], # 一维
mean=1.7, # 中位数
stddev=0.2, # 标准差为0.2
dtype="float32") # 数据类型
# 创建形状和tensor_ones一样,值全为0的张量
tensor_zeros_like = tf.zeros_like(tensor_ones)
with tf.Session() as sess:
print(tensor_zeros.eval()) # eval表示session中执行计算
print(tensor_ones.eval())
print(tensor_nd.eval())
print(tensor_zeros_like.eval())
张量类型转换

张量类型转换示例
import tensorflow as tf
# 张量类型转换
# 创建值全为1的张量
tensor_ones = tf.ones(shape=[2, 3], dtype="float32")
tensor_float = tf.constant([1.1, 2.2, 3.3])
with tf.Session() as sess:
print(tf.cast(tensor_ones, tf.float32).eval()) # 将tensor_ones转换成浮点型并打印
# print(tf.cast(tensor_float, tf.string).eval()) #不允许直接转换为字符串

占位符

占位符的使用:占位符使用时,必须传入参数
import tensorflow as tf
# 定义两个占位符
plhd = tf.placeholder(tf.float32, [2, 3]) # 定义2行3列的占位符
plhd2 = tf.placeholder(tf.float32, [None, 3]) # N行3列的占位符
plhd3 = tf.placeholder(tf.float32, [None, 4])
with tf.Session() as sess:
d = [[1, 2, 3],
[4, 5, 6]]
print(sess.run(plhd, feed_dict={plhd: d})) # 执行占位符操作,需要传入数据 喂入一个字典
print(sess.run(plhd2, feed_dict={plhd2: d})) # 定义为N行3列,执行时传入2行3列
# print(sess.run(plhd3, feed_dict={plhd3: d})) # 定义为N行4列,执行时传入2行3列

张量形状的改变

设置张量的静态形状
import tensorflow as tf
# 张量形状改变
# 静态形状:初始形状,只能设置一次,不能跨阶设置
# 动态形状:运行时的形状,可以多次设置,可以跨阶设置,但元素总数要一致
import tensorflow as tf
pld = tf.placeholder(tf.float32, [None, 3])
pld.set_shape([4, 3]) # 设置静态形状,一旦固定就不能再改变
print(pld)
# pld.set_shape([3, 3]) # 报错
with tf.Session() as sess:
pass
![]()
设置张量的动态形状
import tensorflow as tf
# 张量形状改变
# 静态形状:初始形状,只能设置一次,不能跨阶设置
# 动态形状:运行时的形状,可以多次设置,可以跨阶设置,但元素总数要一致
import tensorflow as tf
pld = tf.placeholder(tf.float32, [None, 3])
pld.set_shape([4, 3]) # 设置静态形状,一旦固定就不能再改变
print(pld)
new_pld = tf.reshape(pld, [3, 4]) # 设置动态性状
print(new_pld)
# pld.set_shape([3, 3]) # 报错
with tf.Session() as sess:
pass

改变动态张量形状
import tensorflow as tf
# 张量形状改变
# 静态形状:初始形状,只能设置一次,不能跨阶设置
# 动态形状:运行时的形状,可以多次设置,可以跨阶设置,但元素总数要一致
import tensorflow as tf
pld = tf.placeholder(tf.float32, [None, 3])
pld.set_shape([4, 3]) # 设置静态形状,一旦固定就不能再改变
print(pld)
new_pld = tf.reshape(pld, [3, 4]) # 设置动态性状
print(new_pld)
new_pld = tf.reshape(pld, [2, 6]) # 多次设置动态形状
print(new_pld)
# new_pld = tf.reshape(pld, [2, 4]) # 报错,元素的个数不匹配
# pld.set_shape([3, 3]) # 报错
with tf.Session() as sess:
pass

本文介绍了使用TensorFlow进行张量的基本操作,包括张量的生成、类型转换、形状变化等核心内容。通过实例展示了如何创建不同类型的张量,如全零张量、全一张量、随机张量,并演示了张量类型转换的方法及占位符的使用。此外,还详细解释了张量形状的静态和动态调整技巧。
1012

被折叠的 条评论
为什么被折叠?



