后端backend及其对应的方法
keras中的后端backend及其相关函数
Keras 是一个模型级的库,提供了快速构建深度学习网络的模块。Keras 并不处理如张量乘法、卷积等底层操作。这些操作依赖于某种特定的、优化良好的张量操作库。Keras 依赖于处理张量的库就称为“后端引擎”。Keras 提供了多种后端引擎Theano/Tensorflow,并将其函数统一封装,使得用户可以以同一个接口调用不同后端引擎的函数。
一、K.prod
keras.backend.prod(x, axis=None, keepdims=False)
功能:在某一指定轴,计算张量中的值的乘积。
参数
- x: 张量或变量。
- axis: 一个整数需要计算乘积的轴。
- keepdims: 布尔值,是否保留原尺寸。 如果 keepdims 为 False,则张量的秩减 1。 如果 keepdims 为 True,缩小的维度保留为长度 1。
返回
- x 的元素的乘积的张量。
Numpy 实现
1 |
|
具体例子:
1 |
|
二、K.cast
keras.backend.cast(x, dtype)
功能:改变张量的数据类型 并返回。
你可以转换一个 Keras 变量,但它仍然返回一个 Keras 张量。
参数
- x: Keras 张量(或变量)。
- dtype: 字符串, (‘float16’, ‘float32’ 或 ‘float64’)。
返回
- Keras 张量,类型为 dtype。
具体例子:
1 |
|
三、K.expand_dims
K.expand_dims(x, dim=-1)
功能:拓展维度,在下标为
dim
的轴上增加一维
三、K.squeeze
K.squeeze(x, axis)
功能:将下标为
axis
的一维从张量中移除
四、batch_gather
K.tf.batch_gather(params, indices)
功能
- 按index索引选择序列中的值
- 支持对张量的批量索引
主要参数:
- params:被索引的张量
- indices:一维索引张量
返回值
- 通过indices获取params下标的张量。
例如:
1 |
|
五、variable
K.variable(value, dtype='float32', name=None)
功能:实例化一个张量,返回之
参数:
- value:用来初始化张量的值
- dtype:张量数据类型
- name:张量的名字(可选)
示例:
1 |
|
六、placeholder
K.placeholder(shape=None, ndim=None, dtype='float32', name=None)
功能:实例化一个占位符,返回之
参数:
- shape:占位符的shape(整数tuple,可能包含None)
- ndim: 占位符张量的阶数,要初始化一个占位符,至少指定
shape
和ndim
之一,如果都指定则使用shape
- dtype: 占位符数据类型
- name: 占位符名称(可选)
示例:
1 |
|
七、shape
> 功能:返回一个张量的符号shape,符号shape的意思是返回值本身也是一个tensor,
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> from keras import backend as K
>>> tf_session = K.get_session()
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> input = keras.backend.placeholder(shape=(2, 4, 5))
>>> K.shape(kvar)
<tf.Tensor 'Shape_8:0' shape=(2,) dtype=int32>
>>> K.shape(input)
<tf.Tensor 'Shape_9:0' shape=(3,) dtype=int32>
__To get integer shape (Instead, you can use K.int_shape(x))__
>>> K.shape(kvar).eval(session=tf_session)
array([2, 2], dtype=int32)
>>> K.shape(input).eval(session=tf_session)
array([2, 4, 5], dtype=int32)
### 八、int_shape
```K.int_shape(x)
功能:以整数Tuple或None的形式返回张量shape
示例:
1 |
|
九、ndim
> 功能:返回张量的阶数,为整数
示例:
1
2
3
4
5
6
7
8
>>> from keras import backend as K
>>> input = K.placeholder(shape=(2, 4, 5))
>>> val = np.array([[1, 2], [3, 4]])
>>> kvar = K.variable(value=val)
>>> K.ndim(input)
3
>>> K.ndim(kvar)
2
### 十、dtype
```K.dtype(x)
功能:返回张量的数据类型,为字符串
示例:
1 |
|
十一、eval
> 功能:求得张量的值,返回一个 **Numpy array**
示例:
1
2
3
4
5
>>> from keras import backend as K
>>> kvar = K.variable(np.array([[1, 2], [3, 4]]), dtype='float32')
>>> K.eval(kvar)
array([[ 1., 2.],
[ 3., 4.]], dtype=float32)
### 十二、zeros / ones / eye / zeros_like / ones_like
1
2
3
4
5
K.zeros(shape, dtype='float32', name=None)
K.ones(shape, dtype='float32', name=None)
eye(size, dtype='float32', name=None)
zeros_like(x, name=None)
ones_like(x, name=None)
> 功能:生成一个全0张量
>
> 生成一个全1张量
>
> 生成一个单位矩阵
示例:
1
2
3
4
5
6
7
>>> from keras import backend as K
>>> kvar = K.zeros((3,4))
>>> kvar = K.ones((3,4))
>>> kvar = K.eye(3)
>>> K.eval(kvar)
>>> kvar_zeros = K.zeros_like(kvar)
### 十三、dot
```K.dot(x, y)
功能:求两个张量的乘积
示例:
1 |
|
十四、batch_dot
K.batch_dot(x, y, axes=None)
功能:按批进行张量乘法
该函数用于计算x和y的点积,其中x和y都是成batch出现的数据。即它的数据shape形如
(batch_size,:)
。batch_dot将产生比输入张量维度低的张量,如果张量的维度被减至1,则通过
expand_dims
保证其维度至少为2参数:
- x,y:阶数大于等于2的张量,在tensorflow下,只支持大于等于3阶的张量
- axes:目标结果的维度,为整数或整数列表,
axes[0]
和axes[1]
应相同例如
- 假设
x = [[1, 2],[3,4]]
,y = [[5, 6],[7, 8]]
,则batch_dot(x, y, axes=1) = [[17, 53]]
,即x.dot(y.T)
的主对角元素,此过程中我们没有计算过反对角元素的值
示例:
1 |
|
十五、transpose
> 功能:张量转置,返回转置后的tensor
示例:
1
2
3
4
5
6
7
8
9
>>> var = K.variable([[1, 2, 3], [4, 5, 6]])
>>> K.eval(var)
array([[ 1., 2., 3.],
[ 4., 5., 6.]], dtype=float32)
>>> var_transposed = K.transpose(var)
>>> K.eval(var_transposed)
array([[ 1., 4.],
[ 2., 5.],
[ 3., 6.]], dtype=float32)
### 十六、max / min / sum / prod
```K.max(x, axis=None, keepdims=False)
K.min(x, axis=None, keepdims=False)
K.sum(x, axis=None, keepdims=False)
K.prod(x, axis=None, keepdims=False)
功能:
- 求张量中的最大值
- 求张量中的最小值
- 在给定轴上计算张量中元素之和
- 在给定轴上计算张量中元素之积
十七、cumsum / cumprod
K.cumsum(x, axis=0)
cumprod(x, axis=0)
功能:
- 在给定轴上求张量的累积和
- 在给定轴上求张量的累积积
十八、reshape
K.reshape(x, shape)
功能:将张量的shape变换为指定shape
十九、permute_dimensions
K.permute_dimensions(x, pattern)
功能:按照给定的模式重排一个张量的轴
参数:
- pattern:代表维度下标的tuple如
(0, 2, 1)
二十、temporal_padding
K.temporal_padding(x, padding=1)
功能:向3D张量中间的那个维度的左右两端填充
padding
个0值
二十一、one-hot
K.one_hot(indices, nb_classes)
功能:输入为n维的整数张量,形如(batch_size, dim1, dim2, … dim(n-1)),输出为(n+1)维的one-hot编码,形如(batch_size, dim1, dim2, … dim(n-1), nb_classes)
二十二、relu / elu / softmax / … / categorical_crossentropy / …
K.
功能:
示例:
1 |
|