文章目录
tensorflow 基础
数据类型
数值
在 TensorFlow 中间,为了表达方便,一般把标量、向量、矩阵也统称为张量,不作区分,需要根据张量的维度数(Dimension)和形状自行判断.
与标量不同,向量的定义须通过 List 类型传给 tf.constant()。创建一个元素的向量
标量
t2 = tf.constant(1, dtype=tf.int32)
向量
t3 = tf.constant([1,2,3,4], dtype=tf.float32)
矩阵
t4 = tf.constant([[1, 2],[3, 4]], dtype=tf.float64)
张量
t5 = tf.constant([[[1, 2], [3, 4]],[[5, 6], [7, 8]]])
t6 = tf.constant([[[[1, 2], [3, 4]],[[5, 6], [7, 8]]],[[[1, 2], [3, 4]],[[5, 6], [7, 8]]]])
字符串
ts1 = tf.constant('Hello World', dtype=tf.string)
ts2 = tf.strings.lower(ts1)
布尔
tb1 = tf.constant(True)
tb2 = tf.constant([True, False])
tb3 = tf.constant(True, dtype=tf.int32)
数值精度
常用的精度类型有tf.int16, tf.int32, tf.int64, tf.float16, tf.float32, tf.float64,其中 tf.float64 即为 tf.double。
对于大部分深度学习算法,一般使用 tf.int32, tf.float32 可满足运算精度要求,部分对精度要求较高的算法,如强化学习,可以选择使用 tf.int64, tf.float64 精度保存张量。
pi1 = tf.constant(np.pi, dtype=tf.float32)
pi2 = tf.constant(np.pi, dtype=tf.float64)
if pi1.dtype != tf.float64 :
pi3 = tf.cast(pi1, tf.tf.float64)
results:
tf.Tensor(3.1415927, shape=(), dtype=float32)
tf.Tensor(3.141592653589793, shape=(), dtype=float64)
tf.Tensor(3.1415927410125732, shape=(), dtype=float64)
可以看到转换后数值不一致的,也不是零
待优化张量
通过tf.Variable()函数可以将普通张量转换为待优化张量
张量的 name 和 trainable 属性是 Variable 特有的属性,name 属性用于命名计算图中的
变量,这套命名体系是 TensorFlow 内部维护的,一般不需要用户关注 name 属性;trainable
表征当前张量是否需要被优化,创建 Variable 对象是默认启用优化标志,可以设置
trainable=False 来设置张量不需要优化
var1 = tf.Variable([1, 2, 3, 4],dtype=tf.float32, name='Test_var1')
var2 = tf.Variable([1, 2, 3, 4],dtype=tf.float32, name='Test_var2', trainable=False)
print(var1)
print(var2.trainable)
print(var1.numpy())
创建张量
从Numpy List中创建Tensor
Numpy Array 和 python list 是非常重要的数据载体,很多时候都是将原始数据读取出后通过Array 和list,即为数据预处理部分, 然后转化为tensor类型
通过 tf.convert_to_tensor 可以创建新 Tensor,并将保存在 Python List 对象或者 Numpy
Array 对象中的数据导入到新 Tensor 中:
a = [1., 1.]
ctt1

最低0.47元/天 解锁文章
4236

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



