Keras Sequential 不提供输入形状

2024-02-12

我目前有一个 keras 模型,如下所示:

model = keras.Sequential()
model.add(keras.layers.Dense(100, activation=tf.nn.relu))
model.add(keras.layers.Dense(100, activation=tf.nn.relu))
model.add(keras.layers.Dense(len(labels), activation=tf.nn.softmax))

The Keras 文档 https://keras.io/getting-started/sequential-model-guide/#specifying-the-input-shape告诉我:

模型需要知道它应该期望什么输入形状。因此,顺序模型中的第一层(并且只有第一层,因为后续层可以进行自动形状推断)需要接收有关其输入形状的信息

However,模型实际上训练得很好,没有错误,即使我从未指定输入的形状。

它如何知道期望的形状是什么?如果我不提供输入形状,默认行为是什么?它将如何影响我的模型?

编辑:这是使用tf.keras,又名 keras 的 Tensorflow 后端


很好的观察 - 我相信 Keras 文档应该更新。当未提供输入形状时,Keras 会从参数中推断出它x of Model.fit然后它才会构建整个模型。具体来说,这是正在发生的事情:

  1. 在添加 Keras 层时Sequential模型,因为论证input_shape(并且,通过扩展,batch_input_shape) 从未设置,该属性Model.inputs遗迹None (see Sequential.add https://github.com/keras-team/keras/blob/master/keras/engine/sequential.py#L135-L180).
  2. 然后,在Model.fit,他们检查是否Model.inputs已设置(参见Model.fit https://github.com/keras-team/keras/blob/master/keras/engine/training.py#L1150 and Model._standardize_user_data https://github.com/keras-team/keras/blob/88ca804d94a0f978d0522d82a2e2bda26362076a/keras/engine/training.py#L500-L504),如果没有,它们会从提供的输入数组推断输入形状。
  3. 最后,在Model._set_inputs,他们用推断建立了整个模型input_shape (see Model._set_inputs https://github.com/keras-team/keras/blob/88ca804d94a0f978d0522d82a2e2bda26362076a/keras/engine/training.py#L409-L417).

这可以通过打印一些重量来验证(例如print(model.layers[0].get_weights()))在拟合模型之前。你会看到,当争论input_shape or batch_input_shape未提供给模型的第一层,权重数组为空,因为模型尚未构建。

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

Keras Sequential 不提供输入形状 的相关文章

随机推荐

  • 对象列表,如何组合具有两个键具有相同值的对象

    我正在创建一个用于创建 IAM 角色的模块 消费者将提供这样的东西 role cross account config account ids 1111112222222 333332222222 external id yesss req
  • 如何使用来自多个数据源的字段创建查找?

    我需要在表单字段中创建动态查找 该字段应显示来自两个不同数据源的字段 我尝试将其执行为 public void lookup query new Query sysTableLookup SysTableLookup newParamete
  • 列出具有特定存储类别的 S3 存储桶对象

    从 Glacier 获取对象非常耗时 因此我决定改用 S3 IA 存储类 我需要列出存储桶中具有 Glacier 存储类的所有对象 我通过 LifeCycle 策略配置它 并将其更改为 S3 IA 有没有任何脚本或工具可以实现这一点 你可以
  • Java 机器人按键命令键

    Mac 上命令键的 VK key 代码是什么 如果存在 我试图让机器人 java 机器人 按下命令键 我正在使用命令 keyPress 并且我需要知道 Mac 上命令键的整数键码 KeyEvent VK META http docs ora
  • 禁用按钮,直到必填字段有效

    我已经搜索了这个问题的答案 但仍然无法让它工作 我想确定
  • Rails 4,将“\n”替换为“ " 用于 Excel 中的 XML 电子表格

    我正在编写一个应用程序 将某些数据导出到特定格式的 Excel 文档中 我正在使用此文档构建 XML 电子表格文件 http msdn microsoft com en us library aa140066 v office 10 asp
  • 内存映射文件线程安全吗

    我想知道您是否可以使用多线程写入单个文件内存映射文件 http en wikipedia org wiki Memory mapped file 并确保两个线程不会写入同一区域 例如 通过交错固定大小的记录 从而减轻应用程序级别同步的需要
  • 如何在没有 CLI 的情况下在 Angular 组件中使用 less

    我有一个应用程序 我必须在其中配置和使用较少的内容来实现动态主题 问题是我们没有使用 angular cli 并且这里的配置有点奇怪 所以我们手动引导 Angular 模块 以下是应用程序的配置 包 json dependencies an
  • 如何将数据导出到 Excel 文件

    我有一个 Excel 文件 其中包含数据 我想将它的一些特定行写入我通过代码创建的另一个 Excel 文件 顺便说一句 我在列表中列出了这些行的索引 我怎样才能做到这一点 MS 提供 OpenXML SDK V 2 5 请参阅https m
  • Android-如何在简单的纸张列表视图中显示图片

    我正在尝试在 SimpleAdapter 列表视图中显示图片 我将 Picasso 包含在我的项目中 但我不知道如何将 Picasso 与 SimpleAdapter 一起使用 List
  • 如何在 JavaScript 中表示代数数据类型和模式匹配

    在像 OCaml 这样的函数式语言中 我们有模式匹配 例如 我想记录用户在我的网站上的操作 操作可以是 1 访问网页 2 删除项目 3 检查其他用户的个人资料等 在 OCaml 中 我们可以编写如下内容 type Action VisitP
  • Java 2d数组作为表,打印出索引

    所以 基本上我需要将二维数组打印为表格 并在其 周围 放置索引 Random rnd new Random int array new int 5 5 for int row 0 row lt array length row for in
  • ControlTemplate.Triggers Silverlight 3 中的 WPF 等效项

    我的 WPF 应用程序中有此 controltemplate 触发器内容
  • xsd.exe 自动实现的属性

    是否可以强制 xsd exe 生成自动实现的属性 而不是 xsd exe 生成的丑陋的手动实现的代码 public abstract partial class SomeClass private string valueField
  • ETrade API无人值守认证

    背景ETrade 身份验证系统让我创建一个 RequestToken 然后执行一个授权 URL 这将打开一个 ETrade 页面 用户登录以授权其帐户上的活动 他们会收到一个 PIN 码 并将其输入到我的应用程序中 我使用 RequestT
  • izpack安装后执行脚本

    我已经制作了包含 jboss 的 jar 文件 我想在 jar 解压并完全安装在我的计算机上时启动我的 Web 应用程序 我应该在 izpack 中的哪里编写脚本或代码或 xml 标记 以便安装应用程序后standalone sh 自动运行
  • 将32位dll转换为64位dll

    当我尝试在 64 位应用程序中使用它时 我有 32 位编译的 dll 但它无法加载 所以我想将dll转换为64位 当应用程序的平台从 任何CPU 或 x64 更改为 x86 时 它工作正常 但我想在 64 位下使用它 因为我要从 ASP 页
  • 如何更改Android中的日期时间语言

    我们如何在不更改设备语言的情况下更改 Android 中的日期 时间语言 下面是我当前的代码 下面的代码根据设备语言而变化 但我想在不更改设备语言设置的情况下进行更改 公共静态字符串格式时间 日期时间 String timeFormat U
  • 使用 Windows 服务实现计划作业的最佳方式是什么

    我有一个偶尔在晚上运行的数据库作业 我需要一个 Windows 服务来定期轮询数据库 以便在 SQL 作业完成后做更多的工作 我正在寻找一个可靠的示例来编写一个调度程序 该调度程序可以优雅地失败而不会导致服务崩溃 只需将其设置为计划任务即可
  • Keras Sequential 不提供输入形状

    我目前有一个 keras 模型 如下所示 model keras Sequential model add keras layers Dense 100 activation tf nn relu model add keras layer