未知的正则化器:tensorflowjs 中的 L2

2023-12-19

我已经使用 model 在 python 中训练了一个模型

reg = 0.000001
model = Sequential()
model.add(Dense(24, activation='tanh', name='input_dense', input_shape=input_shape))
model.add(GRU(24, activation='tanh', recurrent_activation='sigmoid', return_sequences=True, kernel_regularizer=regularizers.l2(reg), recurrent_regularizer=regularizers.l2(reg), reset_after=False))
model.add(Flatten())
model.add(Dense(2, activation='softmax'))

但是当我使用“tensorflowjs_converter --input_format keras”转换此模型并在浏览器中加载时出现错误

未处理的拒绝(错误):未知的正则化器:L2。这可能是由于 出于以下原因之一:

  1. 正则化器是在 Python 中定义的,在这种情况下,需要将其移植到 TensorFlow.js 或 JavaScript 代码中。
  2. 自定义正则化器是在 JavaScript 中定义的,但未使用 tf.serialization.registerClass() 正确注册。

model.json 文件内容是

{
 "format": "layers-model",
 "generatedBy": "keras v2.4.0",
 "convertedBy": "TensorFlow.js Converter v2.3.0",
 "modelTopology": {
  "keras_version": "2.4.0",
  "backend": "tensorflow",
  "model_config": {
   "class_name": "Sequential",
   "config": {
    "name": "sequential",
    "layers": [
     {
      "class_name": "InputLayer",
      "config": {
       "batch_input_shape": [null, 22, 13],
       "dtype": "float32",
       "sparse": false,
       "ragged": false,
       "name": "input_dense_input"
      }
     },
     {
      "class_name": "Dense",
      "config": {
       "name": "input_dense",
       "trainable": true,
       "batch_input_shape": [null, 22, 13],
       "dtype": "float32",
       "units": 24,
       "activation": "tanh",
       "use_bias": true,
       "kernel_initializer": {
        "class_name": "GlorotUniform",
        "config": { "seed": null }
       },
       "bias_initializer": { "class_name": "Zeros", "config": {} },
       "kernel_regularizer": null,
       "bias_regularizer": null,
       "activity_regularizer": null,
       "kernel_constraint": null,
       "bias_constraint": null
      }
     },
     {
      "class_name": "GRU",
      "config": {
       "name": "gru",
       "trainable": true,
       "dtype": "float32",
       "return_sequences": true,
       "return_state": false,
       "go_backwards": false,
       "stateful": false,
       "unroll": false,
       "time_major": false,
       "units": 24,
       "activation": "tanh",
       "recurrent_activation": "sigmoid",
       "use_bias": true,
       "kernel_initializer": {
        "class_name": "GlorotUniform",
        "config": { "seed": null }
       },
       "recurrent_initializer": {
        "class_name": "Orthogonal",
        "config": { "gain": 1.0, "seed": null }
       },
       "bias_initializer": { "class_name": "Zeros", "config": {} },
       "kernel_regularizer": {
        "class_name": "L2",
        "config": { "l2": 9.999999974752427e-7 }
       },
       "recurrent_regularizer": {
        "class_name": "L2",
        "config": { "l2": 9.999999974752427e-7 }
       },
       "bias_regularizer": null,
       "activity_regularizer": null,
       "kernel_constraint": null,
       "recurrent_constraint": null,
       "bias_constraint": null,
       "dropout": 0.0,
       "recurrent_dropout": 0.0,
       "implementation": 2,
       "reset_after": false
      }
     },
     {
      "class_name": "Flatten",
      "config": {
       "name": "flatten",
       "trainable": true,
       "dtype": "float32",
       "data_format": "channels_last"
      }
     },
     {
      "class_name": "Dense",
      "config": {
       "name": "dense",
       "trainable": true,
       "dtype": "float32",
       "units": 2,
       "activation": "softmax",
       "use_bias": true,
       "kernel_initializer": {
        "class_name": "GlorotUniform",
        "config": { "seed": null }
       },
       "bias_initializer": { "class_name": "Zeros", "config": {} },
       "kernel_regularizer": null,
       "bias_regularizer": null,
       "activity_regularizer": null,
       "kernel_constraint": null,
       "bias_constraint": null
      }
     }
    ]
   }
  },
  "training_config": {
   "loss": "categorical_crossentropy",
   "metrics": ["accuracy"],
   "weighted_metrics": null,
   "loss_weights": null,
   "optimizer_config": {
    "class_name": "Nadam",
    "config": {
     "name": "Nadam",
     "learning_rate": 0.0020000000949949026,
     "decay": 0.004000000189989805,
     "beta_1": 0.8999999761581421,
     "beta_2": 0.9990000128746033,
     "epsilon": 1e-7
    }
   }
  }
 },
 "weightsManifest": [
  {
   "paths": ["group1-shard1of1.bin"],
   "weights": [
    { "name": "dense/kernel", "shape": [528, 2], "dtype": "float32" },
    { "name": "dense/bias", "shape": [2], "dtype": "float32" },
    { "name": "gru/gru_cell/kernel", "shape": [24, 72], "dtype": "float32" },
    {
     "name": "gru/gru_cell/recurrent_kernel",
     "shape": [24, 72],
     "dtype": "float32"
    },
    { "name": "gru/gru_cell/bias", "shape": [72], "dtype": "float32" },
    { "name": "input_dense/kernel", "shape": [13, 24], "dtype": "float32" },
    { "name": "input_dense/bias", "shape": [24], "dtype": "float32" }
   ]
  }
 ]
}

Option 1

没有课程L1 and L2;它们只是接口(更多here https://github.com/tensorflow/tfjs/blob/tfjs-v2.4.0/tfjs-layers/src/regularizers.ts)

有一个班级L1L2它将获取配置并返回正确的正则化器。您可以手动替换所有出现的L2 to L1L2.

Option 2

注册L2类

class L2 {

    static className = 'L2';

    constructor(config) {
       return tf.regularizers.l1l2(config)
    }
}
tf.serialization.registerClass(L2);

// now load the model
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

未知的正则化器:tensorflowjs 中的 L2 的相关文章

随机推荐

  • 如何将任何 Azure Active Directory (AD) 用户登录到连接到 Office 365 Sharepoint Online API 的共享本机应用程序

    是否可以设置一个可供不同 Azure 帐户 目录上的用户使用的单个 本机应用程序 以便他们可以从 Office 365 Sharepoint Online 获取数据 我们可以使用 Web 应用程序 来实现此功能 因为在设置此功能的 Azur
  • 如何使用本地 Azure Cli 安装运行 Azure Cli 脚本

    首先 我觉得问这个问题很疯狂 很抱歉 如果这是一个非常愚蠢的问题 这一定是显而易见的 因为我已经到处搜索但找不到答案 我应该如何运行此 Azure 脚本来创建 Azure Function App https learn microsoft
  • 使用锚标记请求文件时强制浏览器不使用缓存

    我有一个锚标记 用于请求下载文件 像这样 a href app results fileName t12 txt other param something title Click to download Download a 该文件可能会
  • 通过迁移改变 Laravel 5 表

    我正在用 laravel 5 制作一个应用程序 我更改了我定义的 投票 字段 table gt enum vote 1 0 1 并且应该如下 table gt enum vote 1 2 3 4 5 为此 您应该执行以下步骤 创建新的迁移文
  • 在 Linux 上验证电子邮件地址

    我正在使用类似的命令sendmail bv email protected cdn cgi l email protection在向人们发送实际电子邮件之前验证某些电子邮件地址以确认该地址是否有效 它适用于我测试过的大多数网站 但有时 我使
  • Indy 的全局、线程安全、cookie 管理器

    我的 Delphi 2010 应用程序使用多线程上传内容 上传的数据被发布到需要登录的 PHP Web 应用程序 所以我需要使用共享 全局 cookie 管理器 我正在使用Indy10 修订版 4743 因为 TIdCookieManage
  • 不符合 Swift 中的 UITableViewDataSource 协议,为什么?

    这是我的代码 尽管我编写了两种方法的实现 但编译器仍然显示错误 请告诉我为什么 导入 UIKit class FirstViewController UIViewController UITableViewDelegate UITableV
  • 无法加载资源:net::ERR_EMPTY_RESPONSE http://test.com

    我正在开发一个 chrome 扩展 它将 XMLHttpRequest 发送到 URL 获取 JSON 格式的响应 解析响应并显示记录列表 它工作正常 问题是当用户执行任何操作并返回列表部分时 系统遵循相同的流程发送 XMLHttpRequ
  • 在 TypeScript 中扩展原生 JavaScript Number 对象

    根据 TypeScript 文档 扩展已经存在的接口就像使用新属性重新声明它一样简单 然后为这些属性提供实现 我曾多次使用这种技术向本机 JavaScript 对象添加静态方法扩展 然而 这不适用于成员函数 例如 TypeScript Pl
  • Linux中文件描述符的上限

    在任何 Linux 系统 特别是 ubuntu 10 04 中可以使用的文件描述符的上限是多少 我使用的是 Ubuntu 10 04 64 位 服务器的 CPU 架构是 x86 64 客户端的 CPU 架构是 i686 现在我已经将我的 f
  • Maven 校验和失败

    我正在开发一个使用 Maven 作为构建工具的项目 我使用的是该工具的 2 2 1 版本 最近 一位同事提到 由于校验和错误 他无法构建该项目 我没有收到这些错误 因此我删除了本地存储库 果然 我在下次尝试构建时也遇到了校验和错误 我们使用
  • 无法终止线程

    我在我的项目中使用线程 我想立即杀死并终止一个线程 sample type test class TThread private Private declarations protected procedure Execute overri
  • 如何在屏蔽数组上运行numpy函数percentile()?

    我尝试从具有 NoData 值的数组中检索百分位数 在我的例子中 Nodata 值由 3 40282347e 38 表示 我认为屏蔽数组会从进一步的计算中排除这些值 我成功创建了掩码数组 但对于 np percentile 函数 掩码没有效
  • 在 jQuery/JavaScript 中模拟链接上的点击

    我想使用 JavaScript 模拟点击页面上的任何链接 如果该链接有某个函数绑定到其 onclick 事件 通过我无法控制的任何其他 JS 则必须调用该函数 否则该链接应以正常方式运行并打开一个新页面 我不确定仅检查 onclick 处理
  • 在为内核编码时可以使用 stdio...吗?

    我需要构建一个操作系统 一个非常小且基本的操作系统 实际上功能最少 用 C 编写 可能是一个 CUI 操作系统 它可以进行一些内存管理 并且至少有一个文本编辑器和一个计算器 它只是一个关于如何编写对硬件具有完全和直接控制的代码的实验 我仍然
  • 使用顶点着色器旋转纹理

    我正在尝试旋转顶点着色器内的纹理 我有一个指向纹理的指针 出于我的目的 该指针逆时针旋转 90 度 我不想要在调用之前手动旋转纹理glTexImage2D 我可以用 version 120 only 这是我原来的顶点着色器 version
  • 更改 R/lattice 中与多个面板关联的条带的背景和文本

    以下是我正在处理的示例 require lattice data barley xyplot yield year site data barley 我想为不同的 sprips 设置不同的条带颜色 并且字体颜色也根据背景颜色进行不同的优化
  • 如何在 Android 应用程序中创建数据库?

    我正在尝试在我的 Android 应用程序中使用 SQLite 我创建了这样的辅助类 public class EventoSQLHelper Configura o da base nome e vers o private static
  • searchable_dropdown 不适用于类列表

    我使用 searchable dropdown 1 1 0 包实现了一个颤振下拉菜单 我用我的班级列表进行了测试 发现搜索文本字段框不适用于我的班级列表 我希望当我在列表中的字符串 整数中搜索值时 我的下拉搜索框能够正常工作 例如 我希望当
  • 未知的正则化器:tensorflowjs 中的 L2

    我已经使用 model 在 python 中训练了一个模型 reg 0 000001 model Sequential model add Dense 24 activation tanh name input dense input sh