张量
张量的阶和数据类型
(1)张量的属性:
graph:张量所属的默认图
op:张量的操作名
name:张量的字符串描述
shape:张量形状
一维{5}二维{2,3}三维{2,3,4}
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
a = tf.constant(5.0)
graph = tf.get_default_graph()
plt = tf.placeholder(tf.float32, [2, 3])
with tf.Session(config=tf.ConfigProto(log_device_placement=True)) as sess:
print(a.graph)
print(a.shape)
print(plt.shape)
print(a.name)
print(a.op)
(2)动态形状和静态形状:在于有没有生成一个新的张量数据
Numpy:reshape把原来的数据通过直接修改
**静态形状:**创建一个张量,初始状态的形状
tf.Tensor.get_shape()获取静态形状
tf.Tensor.set_shape()更新Tensor对象的静态形状
动态形状:一种描述原始张量在执行过程中的一种形状(动态变化)
tf.reshape创建一个具有不同形状的新张量
# 形状的概念,静态形状和动态形状
# 对于静态形状来说,一旦张量形状固定了,不能再次设置静态形状,不能跨维度修改
# 动态形状可以去创建一个新的张量,改变的时候一定要注意元素数量一定要匹配
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
plt = tf.placeholder(tf.float32, [None, 2])
print(plt)
plt.set_shape([3, 2])
print(plt)
plt_shape = tf.reshape(plt, [2, 3])
print(plt_shape)
with tf.Session() as sess:
pass
(4)创建随机张量
从正态分布中输出随机值,由随机正态分布的数字组成的矩阵,stddev=1.0就是标准差,方差反映了数据的离散程度
tf.random_normal(shape, mean=0.0,
stddev=1.0, dtype=tf.float32,
seed=None, name=None)
(5)张量变换
tf.string_to_number(string_tensor,out_type=None,name=None)
tf.to_double(x,name="todouble")
tf.to_float(x,name=)
tf.to_int32(x,name=)
tf.to_int64(x,name=)
tf.cast(x,dtype,name=None)
# 常用
tf.cast([[1, 2, 3], [4, 5, 6]], tf.float32)
(6)切片与拓展
tf.concat(values,axis,name="concat")
import tensorflow as tf
import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
a = [[1, 2, 3], [4, 5, 6]]
b = [[7, 8, 8], [7, 8, 6]]
c = tf.concat([a, b], axis=0)
d = tf.concat([a, b], axis=1)
with tf.Session() as sess:
print(sess.run(c))
print(sess.run(d))
(7)算术运算符、基本数学函数、矩阵运算、减少维度的运算(求均值)、序列运算
这些在官网上有记载API的使用,需要使用的时候再官网进行查阅