model.fit 上的尺寸数量错误

2024-03-04

我正在尝试运行这个 SimpleRNN:

model.add(SimpleRNN(init='uniform',output_dim=1,input_dim=len(pred_frame.columns)))
model.compile(loss="mse", optimizer="sgd")
model.fit(X=predictor_train, y=target_train, batch_size=len(pred_frame.index),show_accuracy=True)

错误出现在 model.fit 上,如下所示:

File "/Users/file.py", line 1496, in Pred
model.fit(X=predictor_train, y=target_train, batch_size=len(pred_frame.index),show_accuracy=True)
File "/Library/Python/2.7/site-packages/keras/models.py", line 581, in fit
shuffle=shuffle, metrics=metrics)
File "/Library/Python/2.7/site-packages/keras/models.py", line 239, in _fit
outs = f(ins_batch)
File "/Library/Python/2.7/site-packages/keras/backend/theano_backend.py", line 365, in __call__
return self.function(*inputs)
File "/Library/Python/2.7/site-packages/theano/compile/function_module.py", line 513, in __call__
allow_downcast=s.allow_downcast)
File "/Library/Python/2.7/site-packages/theano/tensor/type.py", line 169, in filter
data.shape))
TypeError: ('Bad input argument to theano function with name "/Library/Python/2.7/site-packages/keras/backend/theano_backend.py:362"  at index 0(0-based)', 'Wrong number of dimensions: expected 3, got 2 with shape (88, 88).')

该错误告诉我它的维数错误,它应该是 3,但实际上只有 2。它指的是哪些维度?


您正在尝试运行 RNN。这意味着您想要包括之前的时间步在你的计算中。为此,您必须在将数据提供给 SimpleRNN 层之前对其进行预处理。

为简单起见,我们假设不是 88 个样本(每个样本有 88 个特征),而是 8 个样本(每个样本有 4 个特征)。现在,当使用 RNN 时,您必须决定反向传播的最大值(即计算中包含的先前时间步数)。在这种情况下,您可以选择最多包含 2 个先前时间步。因此,为了计算 RNN 的权重,您必须在每个时间步提供当前时间步的输入(具有 4 个特征)和前 2 个时间步的输入(每个时间步具有 4 个特征)。就像这个可视化中一样:

sequence    sample0  sample1  sample2  sample3  sample4  sample5  sample6 sample7       
   0        |-----------------------|
   1                 |-----------------------|
   2                          |-----------------------|
   3                                   |-----------------------|
   4                                             |----------------------|
   5                                                      |----------------------|

因此,您不必提供 (nb_samples, nb_features) 矩阵作为 SimpleRNN 的输入,而是必须提供 (nb_sequences, nb_timesteps, nb_features) 形状的输入。在此示例中,这意味着您不是提供 (8x4) 输入,而是提供 (5x3x4) 输入。

喀拉斯嵌入 http://keras.io/layers/embeddings/层可以完成这项工作,但在这种情况下,您也可以为其编写一个简短的代码:

input = np.random.rand(8,4)
nb_timesteps = 3    # 2 (previous) + 1 (current)
nb_sequences = input.shape[0] - nb_timesteps    #8-3=5

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

model.fit 上的尺寸数量错误 的相关文章

随机推荐

  • 有什么方法可以解决 C4772 错误而无需注册 DLL?

    我正在维护一个 VS2010 项目 其中有许多交叉引用的 COM 库 我正在尝试配置该项目 使其可以从安装了 VS2010 的随机工作站构建 工作站可以是 32 位和 64 位 因此如果我将项目配置为 注册输出 则构建将无法在 32 位计算
  • 删除 struts 2 中的转换验证消息或使其通用

    在我的 struts2 应用程序中 我有一个名为 CarrierNo 的字段 它接受整数 当我将字符串放入其中时 会给出以下验证错误消息 Invalid field value for field carrierNo 我可以像这样在属性文件
  • 有没有一种简单的方法来计算两个数组之间的差异[重复]

    这个问题在这里已经有答案了 我正在尝试计算 Swift 中两个数组中值之间的差异 我想减去两个数组之间每个索引处的值 我尝试执行以下操作 var array1 Double 1 2 3 4 5 var array2 Double 2 3 4
  • 存储过程的命名约定是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 GitHub 上使用 Laravel 包的 PR?

    当我想在 GitHub 上对 Laravel 包发出拉取请求时 我会按以下方式进行操作 创建新的 Laravel 项目 需要并安装包 从供应商文件夹中的项目中删除附加文件 Fork GitHub 并将文件克隆到项目文件夹中 更改打包并测试所
  • AJAX DJango 从多个文件字段获取文件

    我正在使用 AJAX 和 DJango 进行多个文件上传 但遇到问题 如何从字段输入获取文件并将其推送到data HTML
  • NLTK 使用语料库标记西班牙语单词

    我正在尝试学习如何使用 NLTK 标记西班牙语单词 来自NLTK书 http nltk org book ch05 html 使用它们的示例来标记英语单词非常容易 因为我对 nltk 和所有语言处理都很陌生 所以我对如何进行感到非常困惑 我
  • 在 Java 中分割命令行

    在 Java 中解析类似 shell 的命令行的推荐方法是什么 我的意思并不是说在选项已经处于数组形式时处理选项 例如处理 x 等 已经有很多关于此的问题和答案 不 我的意思是把完整的命令字符串分割成 令牌 我需要转换一个字符串 例如 us
  • 如何在 django 模板中减去两个 datetime.time 值,以及如何将持续时间格式化为小时、分钟

    在 django 应用程序中 我发送了一个列表Entry对象到模板 每个Entry对象有一个开始时间和结束时间 它们是 datetime time 值 从TimeFields在表单上 在列出条目对象时 我需要显示每个条目的持续时间 在模型中
  • 将 UserControl 序列化为 xaml,但不序列化其子控件?

    NET 4 0 中的 XAML 序列化堆栈进行了相当多的更改 其中一项更改是 当序列化 UserControl 时 您不仅可以获得控件本身 还可以获得其所有子控件 var sb new StringBuilder var writer Xm
  • 创建链接服务器和数据库别名

    我有两台服务器 Server1 和 Server2 在两台服务器上我都有一个名为 QAI 的数据库 有没有一种方法可以创建一个链接服务器 其别名从 Server2 到 Server1 而不是 服务器1 QAI dbo tbBlah 将其别名
  • 使用 Windows 调度程序运行 jar 文件

    我有 jar 文件 我想从 Windows 7 中的 Windows 调度程序运行该文件 我已经给出了路径java exe在路径 脚本中和 jar c abc ab jar在参数字段中 但它不运行 我也曾在bat文件的帮助下尝试过 但它无法
  • Bash:在 OS X 下查找字符串中字符的位置

    有没有办法找到字符串中第一个字符的位置Bash under Mac OS X 就像是 stringZ abcABC123ABCabc 6 echo expr index stringZ C12 C position 如中所述高级 Bash
  • 如何在 Python 中重新运行代码?

    我有这个单词解扰器游戏 仅在 CMD 或 python shell 中运行 当用户正确或错误地猜测单词时 它会显示 按任意键再次播放 我怎样才能让它重新开始 在评估用户的输入后不要让程序退出 相反 在循环中执行此操作 例如 一个甚至不使用函
  • CSS:在同一行有3个div,中间的div占据剩余空间

    我正在构建一个工具栏 我希望以下示例中的黄色部分占据整个左侧空间 白色 http jsfiddle net MWjGH 1 http jsfiddle net MWjGH 1 div class left Some content div
  • 一起运行 Tkinter 窗口和 PysTray 图标

    我正在构建一个 tkinter gui 项目 并且正在寻找使用 tkinter 窗口运行托盘图标的方法 我发现 Pystray 库可以做到这一点 但现在我正在尝试弄清楚如何将这个库 托盘图标 与 tkinter 窗口一起使用 我设置了当用户
  • 如何使用 OpenPyXL 设置带标题的列格式

    我正在尝试以日期格式设置某些列的格式 我能够使用以下命令成功更改单个单元格的格式 date style Style number format M D YYYY ws E7 style date style 但是除了标题之外 是否有更简单的
  • 由各种分隔符分割,同时保留分隔符?

    我想分割文本 过公元年 因为无论你如何选择 简体字危及了对古代文学的研究输入 使用这三个 或更多 字符作为分隔符 我当然可以这样做 lines preg split u body 但是我不想让结果行保留其结束分隔符 一个句子也可能这样结束啊
  • 如何检查 Bigquery 上列表的某个项目是否在另一个列表项目中?

    我有一个专栏 比如 11999999999 12999999999 31999999999 和另一列 例如 5511777777777 5512888888888 5531999999999 我想做一个CASE WHEN如果第一列上的任何项
  • model.fit 上的尺寸数量错误

    我正在尝试运行这个 SimpleRNN model add SimpleRNN init uniform output dim 1 input dim len pred frame columns model compile loss ms