jekufledo@ 2023-09-21 16:51 采纳率: 0%
浏览 4

lstm实现过程中权值共享问题


class LSTMCell(nn.Module):
    def __init__(self, input_size, hidden_size, cell_size, output_size):
        super().__init__()
        self.hidden_size = hidden_size # 隐含状态h的大小,也即LSTM单元隐含层神经元数量
        self.cell_size = cell_size # 记忆单元c的大小
        # 门
        self.gate = nn.Linear(input_size+hidden_size, cell_size)
        self.output = nn.Linear(hidden_size, output_size)
        self.sigmoid = nn.Sigmoid()
        self.tanh = nn.Tanh()
        self.softmax = nn.LogSoftmax(dim=1)

    def forward(self, input, hidden, cell):
        # 连接输入x与h 
        combined = torch.cat((input, hidden), 1)
        # 遗忘门
        f_gate = self.sigmoid(self.gate(combined))
        # 输入门
        i_gate = self.sigmoid(self.gate(combined))
        z_state = self.tanh(self.gate(combined))
        # 输出门
        o_gate = self.sigmoid(self.gate(combined))
        # 更新记忆单元
        cell = torch.add(torch.mul(cell, f_gate), torch.mul(z_state, i_gate))
        # 更新隐藏状态h
        hidden = torch.mul(self.tanh(cell), o_gate)
        output = self.output(hidden)
        output = self.softmax(output)
        return output, hidden, cell
    
    def initHidden(self):
        return torch.zeros(1, self.hidden_size)

    def initCell(self):
        return torch.zeros(1, self.cell_size)

上述代码实现了LSTM单元,其中init方法中使用了self.gate,是不是存在三个门权值共享的问题?

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-21 18:56
    关注

    【以下回答由 GPT 生成】

    是的,上述实现中存在三个门的权值共享问题。


    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 9月21日

悬赏问题

  • ¥15 在网页上点击view PDF或者open PDF之类的选项加载很慢甚至加载不出来,换网或浏览器都不行
  • ¥115 不能成功安装R语言pathview包
  • ¥15 LEfSe在线分析Galaxy报错,如何解决?
  • ¥15 GTEx数据库eqtl数据整理求教学
  • ¥20 AI自瞄 KMBOXNET
  • ¥15 初学者,自己写的js俄罗斯代码,谁能帮我调试并找出问题所在!! 自己调试了好多遍!快乱了,崩溃了!
  • ¥15 IEC61850库中IedServer_setControlHandler函数的作用
  • ¥15 qt 编译webengine 支持 webgl
  • ¥15 Cadence安装后pcb design可以打开,Capture CIS闪退
  • ¥15 python中post报错