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

原因

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

错误案例

import torch
import torch.nn as nnclass 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, outputif __name__ == "__main__":n_x = 4d_x = 80batch = 2x = 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 nnclass 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, outputif __name__ == "__main__":n_x = 4d_x = 80batch = 2x = 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())

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML5打开本地app应用的方法

大家好我是咕噜美乐蒂,很高兴又和大家见面了! 打开本地应用程序是一种常见的需求,特别是在Web应用程序需要与本地设备或应用程序进行交互时。HTML5并不直接支持通过Web页面直接打开本地应用程序,但可以通过一些间接的方式实现这一…

【vue.js】文档解读【day 4】 | 事件处理

如果阅读有疑问的话,欢迎评论或私信!! 文章目录 事件处理前言监听事件内联事件处理器方法事件处理器方法与内联事件判断在内联处理器中调用方法在内联事件处理器中访问事件参数修饰符事件修饰符按键修饰符常规按键别名系统按键别名组合按键ex…

3d场景重建图像渲染 | 神经辐射场NeRF(Neural Radiance Fields)

神经辐射场NeRF(Neural Radiance Fields) 概念 NeRF(Neural Radiance Fields,神经辐射场)是一种用于3D场景重建和图像渲染的深度学习方法。它由Ben Mildenhall等人在2020年的论文《NeRF: Representing Scenes as Neur…

TVM_深度学习编译器

TVM_深度学习编译器 TVM所做的是要比传统compiler更偏上层的,你可以把它理解成source-to-source compiler,需要其他的后端(backend)来生成最后的指令。比如当编译的Target是Intel CPU时,翻译的顺序是Relay IR -> TVM IR/ Halide IR ->…

一、C#冒泡排序算法

一、C#冒泡排序算法 简介 冒泡排序算法是一种基础的排序算法,它的实现原理比较简单。核心思想是通过相邻元素的比较和交换来将最大(或最小)的元素逐步"冒泡"到数列的末尾。 实现原理 冒泡排序是一种简单的排序算法,其…

CSS Module

CSS Module的作用:将CSS样式作用域限制在特定的组件范围内,以避免全局样式污染和命名冲突。 Vue中如何实现样式模块…

【TB作品】MSP430单片机,音乐播放器,四首音乐,八音盒,Proteus仿真

文章目录 题目要求仿真结果实验报告:基于MSP430单片机的八音盒设计实验目的实验设备实验原理总结 代码和仿真图 题目要求 八音盒 本设计利用MSP430单片机结合内部定时器及LED/LCD,设计一个八音盒,按下单键可以演奏预先设置的歌曲旋律。 基本要求: 使用LED/LCD显示器…

JAVA基础:数组、重载、数据类型、封装、字符串、静态、继承、重写、多态、代码块、权限、接口、内部类

1 数组 //静态初始化 int[] arr1new int[]{1,2,3,4} //简化形式 int[] arr2{1,2,3,4} //动态初始化 int[] arr3new int[5] 2 方法重载 在同一个类中的多个方法的方法名相同,参数个数不同,参数类型不同,参数类型顺序不同 public class Test1 {public …

【javaWeb】在webapp中手动发布一个应用

标题 🐲一、为什么要在webapp中手动发布一个应用🎉二、手动发布步骤1.下载Tomcat2.解压并安装3.在webapps中创建文档 ✨三、总结 🐲一、为什么要在webapp中手动发布一个应用 好处解释灵活性手动发布应用程序可以根据自己的需求进行自定义配置…

2.24计组碎片

op(a1)说的是对a1存的数,即(a1),进行op操作 访存说的是访问、读写主存,如果是写在寄存器上,就不需要访存 对于C就是说,如果是1100-1110的话,就可以对应取到0000-1111,如果是下面那个…

css性能优化的方法?

CSS 优化在网页性能和用户体验中起着重要作用。以下是一些常见的 CSS 优化方法: 合并和压缩CSS文件: 将多个 CSS 文件合并为一个文件,并对其进行压缩,可以减少 HTTP 请求次数和文件大小,加快页面加载速度。 使用CSS预处…

全面解析 LoRA、QLoRA、RLHF,PPO,DPO,Flash Attention、增量学习等大模型算法

随着大模型的飞速发展,在短短一年间就有了大幅度的技术迭代更新,从LoRA、QLoRA、AdaLoRa、ZeroQuant、Flash Attention、KTO、蒸馏技术到模型增量学习、数据处理、新的开源模型的理解等,几乎每天都有新的发展。 作为算法工程师,面…

【Linux】文本替换Ubuntu 中 sed 指令的使用指南

没什么 大愿望 没有什么事 要赶 看见路口红灯 一直闪 它像 眨眼的小太阳 乌云还 挺大胆 顶在头上 吹不散 我抓在手里 捏成棉花糖 什么烦恼 不能忘 既然 是路一定有转弯 哪个风景 都漂亮 🎵 周深《小美满》 在 Ubuntu(或其他类 Unix…

09.JavaScript中的深浅拷贝和异常处理

一、深浅拷贝 1.浅拷贝 首先浅拷贝和深拷贝只针对引用类型 浅拷贝:拷贝的是地址 常见方法: 拷贝对象:Object.assgin() / 展开运算符 {…obj} 拷贝对象拷贝数组:Array.prototype.concat() 或者 […arr] 如果是简单数据类型拷贝…

pdfgear:免费易用的pdf处理软件,轻松进行pdf文件转换、阅读、编辑等

名人说:东边日出西边雨,道是无晴却有晴。——刘禹锡 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、软件介绍①pdfgear②核心功能③PDFgear的优势二、下载安装①下载②安装三、使用方法①阅读②pdf编辑③pdf转换四、总结

Spring状态机简单实现

一、什么是状态机 状态机,又称有限状态自动机,是表示有限个状态以及在这些状态之间的转移和动作等行为的计算模型。状态机的概念其实可以应用的各种领域,包括电子工程、语言学、哲学、生物学、数学和逻辑学等,例如日常生活中的电…

基于单片机的恒压供水控制器设计

摘 要 随着我国现代化的进程不断加快,城市居民生活水平不断提高,随之而来的是房屋的翻新和重建,但建筑层数的不断增高,使得供水所需压力不断提高,若建筑设计时对压力判断不足,会导致供水时无法供应到高楼层…

2.1HTML5基本结构

HTML5实际上不算是一种编程语言&#xff0c;而是一种标记语言。HTML5文件是由一系列成对出现的元素标签嵌套组合而成&#xff0c;这些标签以<元素名>的形式出现&#xff0c;用于标记文本内容的含义。浏览器通过元素标签解析文本内容并将结果显示在网页上&#xff0c;而元…

【Jenkins】data stream error|Error cloning remote repo ‘origin‘ 错误解决【亲测有效】

错误构建日志 17:39:09 ERROR: Error cloning remote repo origin 17:39:09 hudson.plugins.git.GitException: Command "git fetch --tags --progress http://domain/xxx.git refs/heads/*:refs/remotes/origin/*" returned status code 128: 17:39:09 stdout: 17…

多线程(代码案例: 单例模式, 阻塞队列, 生产者消费者模型,定时器)

设计模式是什么 类似于棋谱一样的东西 计算机圈子里的大佬为了能让小菜鸡的代码不要写的太差 针对一些典型的场景, 给出了一些典型的解决方案 这样小菜鸡们可以根据这些方案(ACM里面叫板子, 象棋五子棋里叫棋谱, 咱这里叫 设计模式), 略加修改, 这样代码再差也差不到哪里去 … …