动手学习深度学习1
这个笔记是《动手学习深度学习》的学习笔记,github地址:动手学习深度学习)
数据操作
我们这部分先记录怎么进行数据操作
张量创建
首先我们先说学物理的都比较熟悉的张量,在TensorFlow我们先引入包:
|
|
首先可以使用range创建一个行张量,
|
|
可以访问shapr属性来访问张量的形状。
如果想要知道张量中元素的个数,可以使用size函数
|
|
可以使用reshape函数来改变张量的形状
|
|
使用reshape函数时,必须保证元素个数不变。
使用-1作为参数的时候,函数会自动计算出需要的维度,
|
|
有的时候我们想要使用一个所有元素都相等的张量,我们可以创建一个确定形状的张量,代码如下
|
|
有的时候我们想要得到一个某个特定分布的随机采样来得到值,所以我们可以写这样的语句
|
|
还可以提供包括数值的列表来为每一个数值提供确定的值,
|
|
运算符
我们现在引入一些运算,这样我们就可以对张量进行操作了。对于具有相同形状的张量,我们引入
|
|
这是按元素运算,我们还可以做更多的操作,比如一元操作符:
|
|
这个是按元素求指数。
我们还可以将两个张量连接起来,使用tf.concat函数,这个函数需要两个参数,第一个是张量的列表,第二个是连接的维度。
|
|
我们有的时候会需要通过逻辑运算符构建二维张量,以X==Y为例,如果某个位置的元素相等,那么这个位置就为True,否则为False。
对所有元素求和,会得到一个单元素张量
|
|
有时我们需要对一个张量的某个维度求和,可以使用axis参数来指定维度,比如tf.reduce_sum(x, axis=0),这个会沿着第0个维度求和。
广播机制
广播机制允许不同形状的张量进行运算,比如
|
|
这个会自动将x和y广播为(4,3)的形状,然后进行运算。
索引和切片
我们使用:来表示切片,比如x[1:3]表示第1到第2个元素,不包括第3个元素。
$\xi \zeta$