list: 可以存储不同数据类型,缺点不适合存储较大的数据,如图片
np.array: 解决同类型大数据数据的载体,方便数据运算,缺点是在深度学习之前就设计好的,不支持GPU
tf.tensor:更适合深度学习,支持GPU
scalar: 1.1
vector:[1.1] , [1.1,2.2,……]
matrix:[[1,2,3,],[4,5,6],[7,8,9]]
torsor:rank > 2 (一般指的是维度大于2的数据)
但是,在tensorflow里面我们把数据的数据都叫tensor
import tensorflow as tf
# 创建一个整型的数据
tf.constant(1)
# Out[3]:
# 注意因为这里的constant就是一个普通的tensor,不要理解为常量了(TF1.0是代表一个常量)
# 创建一个浮点类型的数据
tf.constant(1.)
# Out[4]:
# 若给定一个浮点型的数据,但是指定为int类型会报错
tf.constant(2.2,dtype=tf.int32)
# TypeError: Cannot convert 2.2 to EagerTensor of dtype int32
# 给一数指定双精度
tf.constant(2.,dtype=tf.double)
# Out[6]:
# 创建bool类型的数据
tf.constant([True,False])
# Out[7]:
# 创建字符串型数据(很少用)
tf.constant("hello,world")
# Out[8]:
下面开始介绍Tensor常用的属性
import tensorflow as tf
with tf.device("cpu"):
a = tf.constant([1])
with tf.device("gpu"):
b = tf.range(6)
print(a.device)
print(b.device)
# 数据在CPU和GPU上的转换
aa = a.gpu()
print(aa.device)
bb = b.cpu()
print(bb.device)
输出结果:
/job:localhost/replica:0/task:0/device:CPU:0
/job:localhost/replica:0/task:0/device:GPU:0
/job:localhost/replica:0/task:0/device:GPU:0
/job:localhost/replica:0/task:0/device:CPU:0
c = tf.range(10)
#Out[14]:
c.numpy()
#Out[15]: array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
d = tf.range(10)
d.shape
# Out[17]: TensorShape([10])
d.ndim
# Out[18]: 1
# 用rank查看tensor的维度(秩):返回的是一个tensor类型的数据
tf.rank(d)
# Out[19]:
tf.rank(tf.ones([3,4,2]))
# Out[20]:
# tf.name
# 是Tensorflow1.0中的概念,现在基本已经淘汰了
import numpy as np
import tensorflow as tf
a = tf.constant(1.)
b = tf.constant([True,False])
c = tf.constant("hello,world")
d = np.arange(4)
isinstance(a,tf.Tensor)
# Out[27]: True
tf.is_tensor(b)
# Out[28]: True
tf.is_tensor(d)
# Out[29]: False
a.dtype,b.dtype,c.dtype,d.dtype
# Out[32]: (tf.float32, tf.bool, tf.string, dtype('int32'))
a.dtype == tf.float32
Out[33]: True
c.dtype == tf.string
Out[34]: True
a = np.arange(5)
a.dtype
Out[36]: dtype('int32')
aa = tf.convert_to_tensor(a) # numpy数据转化方法为.astype(np.int64)
# Out[38]:
aa = tf.convert_to_tensor(a, dtype=tf.float32)
# Out[40]:
# 用头tf.cast()数据转化
tf.cast(aa,dtype = tf.float32)
# Out[41]:
aaa = tf.cast(aa,dtype=tf.double)
# Out[43]:
tf.cast(aaa,dtype=tf.int32)
# Out[44]:
# bool 与 int 的转化
b = tf.constant([0,1])
tf.cast(b,tf.bool)
# Out[46]:
bb = tf.cast(b,dtype=tf.bool)
tf.cast(bb,tf.int32)
# Out[48]:
tf.Variable在tensorflow中相比tf.constan一样也是Tensor,tf.Variable特指Tensorflow中哪些可以优化的参数,比如自动求导。tf.Variable可以理解为是专门为神经网络所设立的一个类型。
a = tf.range(5)
b = tf.Variable(a)
# Out[51]:
b.dtype
# Out[52]: tf.int32
b.name
# Out[53]: 'Variable:0'
b = tf.Variable(a, name = "input_data")
b.name
# Out[55]: 'input_data:0'
b.trainable
# Out[56]: True
isinstance(b,tf.Tensor)
# Out[57]: False
isinstance(b,tf.Variable)
# Out[58]: True
tf.is_tensor(b)
# Out[59]: True
b.numpy()
# Out[60]: array([0, 1, 2, 3, 4])
a = tf.ones([])
# Out[63]:
a.numpy()
# Out[64]: 1.0
int(a)
# Out[65]: 1
float(a)
# Out[66]: 1.0