一、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>
补充知识:keras源码之backend库目录
backend库目录
先看common.py
一上来是一些说明
# the type of float to use throughout the session. 整个模块都是用浮点型数据 _FLOATX = 'float32' # 数据类型为32位浮点型 _EPSILON = 1e-7 # 很小的常数 _IMAGE_DATA_FORMAT = 'channels_last' # 图像数据格式 最后显示通道,tensorflow格式
接下来看里面的一些函数
def epsilon(): """Returns the value of the fuzz factor used in numeric expressions. 返回数值表达式中使用的模糊因子的值 # Returns A float. # Example ```python > keras.backend.epsilon() 1e-07 ``` """ return _EPSILON
该函数定义了一个常量,值为1e-07,在终端可以直接输出,如下:
def set_epsilon(e): """Sets the value of the fuzz factor used in numeric expressions. # Arguments e: float. New value of epsilon. # Example ```python > from keras import backend as K > K.epsilon() 1e-07 > K.set_epsilon(1e-05) > K.epsilon() 1e-05 ``` """ global _EPSILON _EPSILON = e
该函数允许自定义值
以string的形式返回默认的浮点类型:
def floatx(): """Returns the default float type, as a string. (e.g. 'float16', 'float32', 'float64'). # Returns String, the current default float type. # Example ```python > keras.backend.floatx() 'float32' ``` """ return _FLOATX
把numpy数组投影到默认的浮点类型:
def cast_to_floatx(x): """Cast a Numpy array to the default Keras float type.把numpy数组投影到默认的浮点类型 # Arguments x: Numpy array. # Returns The same Numpy array, cast to its new type. # Example ```python > from keras import backend as K > K.floatx() 'float32' > arr = numpy.array([1.0, 2.0], dtype='float64') > arr.dtype dtype('float64') > new_arr = K.cast_to_floatx(arr) > new_arr array([ 1., 2.], dtype=float32) > new_arr.dtype dtype('float32') ``` """ return np.asarray(x, dtype=_FLOATX)
默认数据格式、自定义数据格式和检查数据格式:
def image_data_format(): """Returns the default image data format convention ('channels_first' or 'channels_last'). # Returns A string, either `'channels_first'` or `'channels_last'` # Example ```python > keras.backend.image_data_format() 'channels_first' ``` """ return _IMAGE_DATA_FORMAT def set_image_data_format(data_format): """Sets the value of the data format convention. # Arguments data_format: string. `'channels_first'` or `'channels_last'`. # Example ```python > from keras import backend as K > K.image_data_format() 'channels_first' > K.set_image_data_format('channels_last') > K.image_data_format() 'channels_last' ``` """ global _IMAGE_DATA_FORMAT if data_format not in {'channels_last', 'channels_first'}: raise ValueError('Unknown data_format:', data_format) _IMAGE_DATA_FORMAT = str(data_format) def normalize_data_format(value): """Checks that the value correspond to a valid data format. # Arguments value: String or None. `'channels_first'` or `'channels_last'`. # Returns A string, either `'channels_first'` or `'channels_last'` # Example ```python > from keras import backend as K > K.normalize_data_format(None) 'channels_first' > K.normalize_data_format('channels_last') 'channels_last' ``` # Raises ValueError: if `value` or the global `data_format` invalid. """ if value is None: value = image_data_format() data_format = value.lower() if data_format not in {'channels_first', 'channels_last'}: raise ValueError('The `data_format` argument must be one of ' '"channels_first", "channels_last". Received: ' + str(value)) return data_format
剩余的关于维度顺序和数据格式的方法:
def set_image_dim_ordering(dim_ordering): """Legacy setter for `image_data_format`. # Arguments dim_ordering: string. `tf` or `th`. # Example ```python > from keras import backend as K > K.image_data_format() 'channels_first' > K.set_image_data_format('channels_last') > K.image_data_format() 'channels_last' ``` # Raises ValueError: if `dim_ordering` is invalid. """ global _IMAGE_DATA_FORMAT if dim_ordering not in {'tf', 'th'}: raise ValueError('Unknown dim_ordering:', dim_ordering) if dim_ordering == 'th': data_format = 'channels_first' else: data_format = 'channels_last' _IMAGE_DATA_FORMAT = data_format def image_dim_ordering(): """Legacy getter for `image_data_format`. # Returns string, one of `'th'`, `'tf'` """ if _IMAGE_DATA_FORMAT == 'channels_first': return 'th' else: return 'tf'
在common.py之后有三个backend,分别是cntk,tensorflow和theano。
__init__.py
首先从common.py中引入了所有需要的东西
from .common import epsilon from .common import floatx from .common import set_epsilon from .common import set_floatx from .common import cast_to_floatx from .common import image_data_format from .common import set_image_data_format from .common import normalize_data_format
接下来是检查环境变量与配置文件,设置backend和format,默认的backend是tensorflow。
# Set Keras base dir path given KERAS_HOME env variable, if applicable. # Otherwise either ~/.keras or /tmp. if 'KERAS_HOME' in os.environ: # 环境变量 _keras_dir = os.environ.get('KERAS_HOME') else: _keras_base_dir = os.path.expanduser('~') if not os.access(_keras_base_dir, os.W_OK): _keras_base_dir = '/tmp' _keras_dir = os.path.join(_keras_base_dir, '.keras') # Default backend: TensorFlow. 默认后台是TensorFlow _BACKEND = 'tensorflow' # Attempt to read Keras config file.读取keras配置文件 _config_path = os.path.expanduser(os.path.join(_keras_dir, 'keras.json')) if os.path.exists(_config_path): try: with open(_config_path) as f: _config = json.load(f) except ValueError: _config = {} _floatx = _config.get('floatx', floatx()) assert _floatx in {'float16', 'float32', 'float64'} _epsilon = _config.get('epsilon', epsilon()) assert isinstance(_epsilon, float) _backend = _config.get('backend', _BACKEND) _image_data_format = _config.get('image_data_format', image_data_format()) assert _image_data_format in {'channels_last', 'channels_first'} set_floatx(_floatx) set_epsilon(_epsilon) set_image_data_format(_image_data_format) _BACKEND = _backend
之后的tensorflow_backend.py文件是一些tensorflow中的函数说明,详细内容请参考tensorflow有关资料。
以上这篇浅谈keras中的后端backend及其相关函数(K.prod,K.cast)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 《暗喻幻想》顺风耳作用介绍
- 崔健1985-梦中的倾诉[再版][WAV+CUE]
- 黄子馨《追星Xin的恋人们2》HQ头版限量编号[WAV+CUE]
- 孟庭苇《情人的眼泪》开盘母带[低速原抓WAV+CUE]
- 孙露《谁为我停留HQCD》[低速原抓WAV+CUE][1.1G]
- 孙悦《时光音乐会》纯银CD[低速原抓WAV+CUE][1.1G]
- 任然《渐晚》[FLAC/分轨][72.32MB]
- 英雄联盟新英雄安蓓萨上线了吗 新英雄安蓓萨技能介绍
- 魔兽世界奥杜尔竞速赛什么时候开启 奥杜尔竞速赛开启时间介绍
- 无畏契约CGRS准星代码多少 CGRS准星代码分享一览
- 张靓颖.2012-倾听【少城时代】【WAV+CUE】
- 游鸿明.1999-五月的雪【大宇国际】【WAV+CUE】
- 曹方.2005-遇见我【钛友文化】【WAV+CUE】
- Unity6引擎上线:稳定性提升、CPU性能最高提升4倍
- 人皇Sky今日举行婚礼!电竞传奇步入新篇章