【时间】2019.02.25
【题目】keras中的后端backend及其相关函数(K.prod,K.cast)
具体参考:Keras 后端,其中
一、K.prod
prod
keras.backend.prod(x, axis=None, keepdims=False)
功能:在某一指定轴,计算张量中的值的乘积。
参数
- x: 张量或变量。
- axis: 一个整数需要计算乘积的轴。
- keepdims: 布尔值,是否保留原尺寸。 如果
keepdims
为False
,则张量的秩减 1。 如果keepdims
为True
,缩小的维度保留为长度 1。返回
x
的元素的乘积的张量。
Numpy 实现
def prod(x, axis=None, keepdims=False):
if isinstance(axis, list):
axis = tuple(axis)
return np.prod(x, axis=axis, keepdims=keepdims)
具体例子:
import numpy as np
x=np.array([[2,4,6],[2,4,6]])
scaling = np.prod(x, axis=1, keepdims=False)
print(x)
print(scaling)
【运行结果】
二、K.cast
cast
keras.backend.cast(x, dtype)
功能:将张量转换到不同的 dtype 并返回。
你可以转换一个 Keras 变量,但它仍然返回一个 Keras 张量。
参数
- x: Keras 张量(或变量)。
- dtype: 字符串, (
'float16'
,'float32'
或'float64'
)。返回
Keras 张量,类型为
dtype
。
例子
>>> from keras import backend as K
>>> input = K.placeholder((2, 3), dtype='float32')
>>> input
<tf.Tensor 'Placeholder_2:0' shape=(2, 3) dtype=float32>
# It doesn't work in-place as below.
>>> K.cast(input, dtype='float16')
<tf.Tensor 'Cast_1:0' shape=(2, 3) dtype=float16>
>>> input
<tf.Tensor 'Placeholder_2:0' shape=(2, 3) dtype=float32>
# you need to assign it.
>>> input = K.cast(input, dtype='float16')
>>> input
<tf.Tensor 'Cast_2:0' shape=(2, 3) dtype=float16>