生成张量
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