AttributeError: cannot assign module before Module.__init__() call

原因

调用了自定义的类,但是在自定义的类的__init__函数下面没有写super( XXX, self ).init()

错误案例

import torch
import torch.nn as nn

class SelfAttention(nn.Module):
    """ Self-Attention """

    def __init__(self, n_head, d_k, d_v, d_x, d_o):
        #super(SelfAttention, self).__init__()#SelfAttention 是类名
        self.wq = nn.Parameter(torch.Tensor(d_x, d_k))
        self.wk = nn.Parameter(torch.Tensor(d_x, d_k))
        self.wv = nn.Parameter(torch.Tensor(d_x, d_v))

        self.mha = MultiHeadAttention(n_head=n_head, d_k_=d_k, d_v_=d_v, d_k=d_k, d_v=d_v, d_o=d_o)

        self.init_parameters()

    def init_parameters(self):
        for param in self.parameters():
            stdv = 1. / np.power(param.size(-1), 0.5)
            param.data.uniform_(-stdv, stdv)

    def forward(self, x, mask=None):
        q = torch.matmul(x, self.wq)   
        k = torch.matmul(x, self.wk)
        v = torch.matmul(x, self.wv)

        attn, output = self.mha(q, k, v, mask=mask)

        return attn, output


if __name__ == "__main__":
    n_x = 4
    d_x = 80
    batch = 2
    x = torch.randn(batch, n_x, d_x)
    mask = torch.zeros(batch, n_x, n_x).bool()

    selfattn = SelfAttention(n_head=8, d_k=128, d_v=64, d_x=80, d_o=80)
    attn, output = selfattn(x, mask=mask)

    print(attn.size())
    print(output.size())

在这里插入图片描述

正确案例

import torch
import torch.nn as nn

class SelfAttention(nn.Module):
    """ Self-Attention """

    def __init__(self, n_head, d_k, d_v, d_x, d_o):
        super(SelfAttention, self).__init__()#SelfAttention 是类名
        self.wq = nn.Parameter(torch.Tensor(d_x, d_k))
        self.wk = nn.Parameter(torch.Tensor(d_x, d_k))
        self.wv = nn.Parameter(torch.Tensor(d_x, d_v))

        self.mha = MultiHeadAttention(n_head=n_head, d_k_=d_k, d_v_=d_v, d_k=d_k, d_v=d_v, d_o=d_o)

        self.init_parameters()

    def init_parameters(self):
        for param in self.parameters():
            stdv = 1. / np.power(param.size(-1), 0.5)
            param.data.uniform_(-stdv, stdv)

    def forward(self, x, mask=None):
        q = torch.matmul(x, self.wq)   
        k = torch.matmul(x, self.wk)
        v = torch.matmul(x, self.wv)

        attn, output = self.mha(q, k, v, mask=mask)

        return attn, output


if __name__ == "__main__":
    n_x = 4
    d_x = 80
    batch = 2
    x = torch.randn(batch, n_x, d_x)
    mask = torch.zeros(batch, n_x, n_x).bool()

    selfattn = SelfAttention(n_head=8, d_k=128, d_v=64, d_x=80, d_o=80)
    attn, output = selfattn(x, mask=mask)

    print(attn.size())
    print(output.size())

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/457630.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux搭建FTP服务器

一、概念简介 vsftpd(very secure FTP daemon)是Linux下的一款小巧轻快、安全易用的FTP服务器软件,本次实验介绍如何在Linux上安装并配置vsftpd。 FTP(File Transfer Protocol)是一种文件传输协议,基于客户…

【爬虫开发】爬虫从0到1全知识md笔记第1篇:爬虫概述【附代码文档】

爬虫开发从0到1全知识教程完整教程(附代码资料)主要内容讲述:爬虫概述。selenium的其它使用方法。Selenium课程概要。常见的反爬手段和解决思路。验证码处理。chrome浏览器使用方法介绍。JS的解析。Mongodb的介绍和安装,小结。mongodb的简单使…

人工智能|机器学习——CURE聚类算法(层次聚类)

1.CURE聚类概述 绝大多数聚类算法或者擅长处理球形和相似大小的聚类.或者在存在孤立点时变得比较脆弱。CURE采用了一种新颖的层次聚类算法.该算法选择基于质心和基于代表对象方法之间的中间策略。它不同于单个质心或对象来代表一个类,而是选择…

远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件

很多小伙伴都会在工作中使用code-server,比如说远程办公,当你需要在家访问你的工作环境,亦或者是你们公司的Docker是放入服务器中。code-server 无疑是最好的选择,它可以让你通过互联网安全地连接到远程服务器上的开发环境并且使用…

UE5 android打包

下载安装JDK https://repo.huaweicloud.com/java/jdk/https://repo.huaweicloud.com/java/jdk/ 选择对应的jdk版本 配置环境变量 编辑Path 验证是否成功 java -version 安装Android Studio https://developer.android.google.cn/studio?hlzh-cnhttps://developer.androi…

C# 连接neo4j数据库,包括非默认的neo4j默认库

官方文档没找见,自己在源码里面找到的 private string _dbHost "bolt://localhost:7687"; private string _dbUser "neo4j"; private string _dbPassword "******"; private IDriver? _driver;public CQLOperation(string _data…

HTTPS基础

目录 HTTPS简介 HTTP与HTTPS的区别 CA证书 案例 服务器生成私钥与证书 查看证书和私钥存放路径 Cockpit(图像化服务管理工具) HTTPS简介 超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提供任何方式的数据加密&…

以题为例浅谈SSRF

什么是ssrf SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。(正是因为它是由服务端发起的,所以它能够请求到与它相连…

怎么避免电脑数据被拷贝?电脑如何禁用USB功能?

在无纸化办公的今天,很多重要数据都存放在电脑中。为了避免数据泄露,需要采用安全的方式保护电脑数据。那么,该如何避免电脑数据被拷贝呢?下面我们就来了解一下。 方法一:物理隔绝 物理隔绝是一种原始但有效的USB禁用…

数码管的动态显示(三)

1.原理 data_reg寄存,只寄存符号位和数据位不包含小数点位。 动态数码管每个显示1ms,所以计数到5*10^4-1 为了将sel和seg同步,把sel打了一拍。 6位都使用到了可以这么计算,6位都显示的是数据。或者最高位显示的是小数点&#xff…

ubuntu 下git常用指令【持续更新中】

1.下载 sudo apt install git 2. 查看版本 git --version3. 登录git账号 git config --global user.email "youexample.com" git config --global user.name "Your Name"4.生成密钥对 ssh-keygen -t rsa -C "your_emailyouremail.com"复制公…

鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:EffectComponent)

特效合并容器组件,用于子节点特效绘制的合并,实现特效的绘制性能优化。 说明: 该组件从API Version 10开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 该组件为系统接口。 目前该组件仅支持子组件背景…

LORA_ LOW-RANK ADAPTATION OF LARGE LANGUAGE MODELS

paper: https://arxiv.org/pdf/2106.09685.pdf code: https://github.com/microsoft/LoRA 摘要 作者提出了低秩自适应,或称LoRA,它冻结了预先训练的模型权值,并将可训练的秩分解矩阵注入变压器架构的每一层,大大减少了下游任务的…

接上一篇:分布式调用链追踪系统设计

所以必须得记录父子关系: A---->B 是 B---->C 的父调用 A---->D 是 D---->E 的父调用 A---->D 还是 D---->F 的父调用 如何记录呢?需要给每个调用分配一个ID (称为 SpanID),并且把这个 ID 传递给子调用, 子…

网络基础 - 预备知识(协议、网络协议、网络传输流程、地址管理)

文章目录 1. 认识 协议2. 了解 网络协议2.1 引入 协议分层2.2 OSI 七层模型 与 TCP/IP 四层模型 3. 网络传输 流程!!!3.1 网络传输流程图3.2 关于报头3.3 实例解释 传输过程(封装与解包) 4. 网络中的地址管理4.1 认识 …

使用Python批量实现在Excel里新加一列

目录 一、引言 二、所需库介绍 三、代码实现 四、批量处理多个Excel文件 五、注意事项与扩展 六、案例演示 七、总结与展望 一、引言 Excel作为广泛使用的电子表格软件,在数据处理和分析中扮演着重要角色。然而,当面对大量Excel文件需要批量处理…

Apache Paimon 的 CDC Ingestion 概述

CDC Ingestion 1)概述 Paimon支持schema evolution将数据插入到Paimon表中,添加的列将实时同步到Paimon表,并且无需重启同步作业。 目前支持的同步方式如下: MySQL Synchronizing Table: 将MySQL中的一个或多个表同步到一个Pa…

win11系统qtcreator构建运行程序首次启动卡顿(win11首次启动应用程序卡顿)

首先可以参考一下这个博客:为什么win11系统开机后第一次打开一个软件很慢,关闭进程重新打开速度就正常了,该怎样解决呢? - 知乎 经过上述博客,但是我没有完全解决,这里说一下自己的方法: 打开任…

ArrayList 和 LinkedList 有什么区别?

1、典型回答 ArrayList 和 LinkedList 是 Java 中常用的集合类,它们都实现了 List 接口,如下图所示: 但二者有以下几点不同: 1、底层数据结构实现不同: ArrayList 底层使用数组实现,它通过一个可调整大小…

泽众云真机-机型支持ADB调试功能即将上线

最近云真机平台在线客服,收到很多咨询关于ADB调试功能,什么时候能更新?据小编所知,正在升级之中,有一块专门为了解决ADB调试功能提前准备,升级网络硬件设备,目前平台的功能已开发完成&#xff0…