zoukankan      html  css  js  c++  java
  • keras_13_keras后端

    1. 后端Backend

    • Keras 是一个模型级库,为开发深度学习模型提供了高层次的构建模块。它不处理诸如张量乘积和卷积等低级操作。相反,它依赖于一个专门的、优化的张量操作库来完成这个操作,它可以作为 Keras 的「后端引擎」。相比单独地选择一个张量库,而将 Keras 的实现与该库相关联,Keras 以模块方式处理这个问题,并且可以将几个不同的后端引擎无缝嵌入到 Keras 中。
    • 目前,Keras 有三个后端实现可用: TensorFlow 后端,Theano 后端,CNTK 后端。
      • TensorFlow 是由 Google 开发的一个开源符号级张量操作框架。
      • Theano 是由蒙特利尔大学的 LISA Lab 开发的一个开源符号级张量操作框架。
      • CNTK 是由微软开发的一个深度学习开源工具包。

    2. 切换后端

    1. 找到$HOME/.keras/keras.json,配置文件如下

      {
          "image_data_format": "channels_last",
          "epsilon": 1e-07,
          "floatx": "float32",
          "backend": "tensorflow" //替换为cntk,theano
      }
      //或者直接修改linux的环境变量 ??
      // KERAS_BACKEND=tensorflow python -c "from keras import backend"
      
    2. keras.josn的详细配置

      • image_data_format: 字符串,"channels_last" 或者 "channels_first"。它指定了 Keras 将遵循的数据格式约定。(keras.backend.image_data_format() 返回它。) - 对于 2D 数据 (例如图像),"channels_last" 假定为 (rows, cols, channels),而 "channels_first" 假定为 (channels, rows, cols)。 - 对于 3D 数据, "channels_last" 假定为 (conv_dim1, conv_dim2, conv_dim3, channels),而 "channels_first" 假定为 (channels, conv_dim1, conv_dim2, conv_dim3)
      • epsilon: 浮点数,用于避免在某些操作中被零除的数字soft常量。
      • floatx: 字符串,"float16", "float32", 或 "float64"。默认浮点精度。
      • backend: 字符串, "tensorflow", "theano", 或 "cntk"

    3. keras中backend的api

    1. from keras import backend as K

    2. 实例化一个输入占位符

      inputs = K.placeholder(shape=(2, 4, 5))
      # 同样可以:
      inputs = K.placeholder(shape=(None, 4, 5))
      # 同样可以:
      inputs = K.placeholder(ndim=3)
      
      #它等价于 tf.placeholder() 或 th.tensor.matrix(), th.tensor.tensor3(), 等等。
      
    3. 实例化一个变量:

      import numpy as np
      val = np.random.random((3, 4, 5))
      var = K.variable(value=val)
      
      # 全 0 变量:
      var = K.zeros(shape=(3, 4, 5))
      # 全 1 变量:
      var = K.ones(shape=(3, 4, 5))
      
      # 它等价于 tf.Variable() 或 th.shared()
      
    4. 你需要的大多数张量操作都可以像在 TensorFlow 或 Theano 中那样完成:

      # 使用随机数初始化张量
      b = K.random_uniform_variable(shape=(3, 4), low=0, high=1) # 均匀分布
      c = K.random_normal_variable(shape=(3, 4), mean=0, scale=1) # 高斯分布
      d = K.random_normal_variable(shape=(3, 4), mean=0, scale=1)
      
      # 张量运算
      a = b + c * K.abs(d)
      c = K.dot(a, K.transpose(b))
      a = K.sum(b, axis=1)
      a = K.softmax(b)
      a = K.concatenate([b, c], axis=-1)
      # 等等
      
    5. 常用函数

      • 这部分用到再查,太多了。。另外,用到一次就来这里总结一次就好,慢慢积累!
  • 相关阅读:
    PeaZip 4.7.3 发布,跨平台压缩工具
    Liferea 1.8.10 发布,Linux的RSS阅读
    PyParticles 0.2.1 发布,粒子模拟工具箱
    微软公布 Windows Phone 8 多项新特性
    SecureCRT 7.0.2 发布,支持 Windows 8 系统
    Qore PostgreSQL Module 2.0 发布
    libquickmail 0.1.6 发布,邮件发送包
    Mobile Lua 6.5 发布,MoSync 的 Lua 移植版本
    企业用户缘何抓住 Windows XP 不放
    Knockout.js 2.2 发布,JavaScript UI 库
  • 原文地址:https://www.cnblogs.com/LS1314/p/10380668.html
Copyright © 2011-2022 走看看