You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Keras Embedding处理时间特征时,如何获取其权重矩阵?

解决Keras Embedding层权重获取的报错问题

嗨,我来帮你搞定这个报错的问题~

你遇到的get_weights() missing 1 required positional argument: 'self'错误,根源在于你没有正确保存Embedding层的实例对象,而是把层的调用结果(一个张量)赋值给了hours_embedding。get_weights()是层实例的方法,不是张量的方法,自然会报错啦。

正确的代码写法

首先,我们需要把Embedding层的实例和它的调用操作分开:

from keras.layers import Embedding, Input

# 定义输入张量
hours_input = Input(shape=(1,), name='hours_input')
# 先创建Embedding层的实例,单独保存这个层对象
hours_embedding_layer = Embedding(24, 64)
# 再用这个层实例处理输入张量,得到嵌入后的输出张量
hours_embedding = hours_embedding_layer(hours_input)

获取权重矩阵

现在你直接调用层实例的get_weights()方法就能拿到权重了:

# 获取权重,返回的是一个列表,第一个元素就是Embedding的权重矩阵
weights = hours_embedding_layer.get_weights()
embedding_matrix = weights[0]
# 这个矩阵的形状是(24, 64),对应你设置的输入维度24和嵌入维度64

补充说明

如果你的层还没有被初始化(比如没构建完整模型、没训练过),可以手动调用build()方法来初始化权重:

# 根据输入形状初始化层的权重
hours_embedding_layer.build((None, 1))
# 之后再获取权重就没问题了
weights = hours_embedding_layer.get_weights()

内容的提问来源于stack exchange,提问作者azin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 06:57:30