首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不一致的错误: TypeError: super( type,obj):obj必须是类型的实例或子类型

不一致的错误: TypeError: super( type,obj):obj必须是类型的实例或子类型
EN

Stack Overflow用户
提问于 2019-05-30 23:36:15
回答 1查看 1.9K关注 0票数 2

我有下面两个类的python代码。

代码语言:javascript
运行
AI代码解释
复制
import torch
import torch.nn as nn
import torch.nn.functional as F

class QNet_baseline(nn.Module):

    """
        A MLP with 2 hidden layer

        observation_dim (int): number of observation features
        action_dim (int): Dimension of each action
        seed (int): Random seed
    """

    def __init__(self, observation_dim, action_dim, seed):
        super(QNet_baseline, self).__init__()
        self.seed = torch.manual_seed(seed)
        self.fc1 = nn.Linear(observation_dim, 128)
        self.fc2 = nn.Linear(128, 64)
        self.fc3 = nn.Linear(64, action_dim)

    def forward(self, observations):
        """
           Forward propagation of neural network

        """

        x = F.relu(self.fc1(observations))
        x = F.relu(self.fc2(x))
        x = self.fc3(x)
        return x


class QNet_3hidden(nn.Module):

    """
        A MLP with 3 hidden layer

        observation_dim (int): number of observation features
        action_dim (int): Dimension of each action
        seed (int): Random seed
    """

    def __init__(self, observation_dim, action_dim, seed):
        super(QNet_3hidden, self).__init__()
        self.seed = torch.manual_seed(seed)
        self.fc1 = nn.Linear(observation_dim, 128)
        self.fc2 = nn.Linear(128, 64)
        self.fc3 = nn.Linear(64, 64)
        self.fc4 = nn.Linear(64, action_dim)

    def forward(self, observations):
        """
           Forward propagation of neural network

        """

        x = F.relu(self.fc1(observations))
        x = F.relu(self.fc2(x))
        x = F.relu(self.fc3(x))
        x = self.fc4(x)
        return x

我使用相同的代码来实例化这两个类。QNet_baseline工作正常,但我得到了QNet_3hidden的以下错误。为什么QNet_baseline会工作,但QNet_3hidden有一个错误?我错过了什么?谢谢!

代码语言:javascript
运行
AI代码解释
复制
/home/workspace/QNetworks.py in __init__(self, observation_dim, action_dim, seed)
     44 
     45     def __init__(self, observation_dim, action_dim, seed):
---> 46         super(QNet_3hidden, self).__init__()
     47         self.seed = torch.manual_seed(seed)
     48         self.fc1 = nn.Linear(observation_dim, 128)

TypeError: super(type, obj): obj must be an instance or subtype of type

另外,下面是两个类如何实例化:

代码语言:javascript
运行
AI代码解释
复制
class DDQN_Agent():
    """Interacts with and learns from the environment.

    Attributes:
        state_size (int): dimension of each state
        action_size (int): dimension of each action
        seed (int): random seed
    """

    def __init__(self, state_size, action_size, seed, qnet="baseline", filename=None):
        """Initialize an Agent object.

        Args:
            filename: path of .pth file with trained weights
        """
        self.state_size = state_size
        self.action_size = action_size
        self.seed = random.seed(seed)

        # Q-Network
        if qnet=="3hidden":
            self.qnetwork_local = QNet_3hidden(state_size, action_size, seed).to(device)
            self.qnetwork_target = QNet_3hidden(state_size, action_size, seed).to(device)
            self.optimizer = optim.Adam(self.qnetwork_local.parameters(), lr=LR)
        else:
            self.qnetwork_local = QNet_baseline(state_size, action_size, seed).to(device)
            self.qnetwork_target = QNet_baseline(state_size, action_size, seed).to(device)
            self.optimizer = optim.Adam(self.qnetwork_local.parameters(), lr=LR)

        if filename:
            weights = torch.load(filename)
            self.qnetwork_local.load_state_dict(weights)
            self.qnetwork_target.load_state_dict(weights)

        # Replay memory
        self.memory = ReplayBuffer(action_size, BUFFER_SIZE, BATCH_SIZE, seed)
        # Initialize time step (for updating every UPDATE_EVERY steps)
        self.t_step = 0
EN

回答 1

Stack Overflow用户

发布于 2021-05-08 03:00:56

我遇到了一个类似的问题,完全重新启动内核起了作用。如本keitakurita的评论中所建议的

您是否正在运行木星笔记本中的代码,而没有重新启动内核?如果是这样的话,您的内核可能引用了错误的类。

我怀疑这可能是因为我在重写类后遇到了错误。

这也解释了为什么这是一个难以复制的错误。下面列出了一些类似的问题,以帮助跟踪相同的问题:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56390705

复制
相关文章
java中返回任意类型值( <V> V get(Object obj))
本文介绍了Java中返回任意类型值(<V> V get(Object obj))的方法,该方法可以在不进行类型转换的情况下直接使用。具体案例包括返回范型、引用类型、基础类型等。
林老师带你学编程
2018/01/04
3.7K0
java中返回任意类型值( &lt;V&gt; V get(Object obj))
在一般情况下返回类型要么是范型,要么就是引用类型、基础类型之类的数据。但是这些类型都是确切的返回类型,如果我想返回我传入的任意类型值,这个时候这些都做不到。
林老师带你学编程
2022/05/06
1K0
你必须掌握的 7 种 JavaScript 错误类型
我们有一个数组,带有两个元素的arr。 接下来,我们尝试将数组扩展为包含90 ** 99 = 2.9512665430652753e + 193元素。
用户8983410
2021/09/19
4.4K0
python file-like Obj
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
py3study
2020/01/07
9920
u3d 两个同样obj查找子物体
立羽
2023/08/24
1610
解决already defined in .obj 的问题(定义/声明的区别)
首先需要搞清楚什么是定义(definition ),什么是声明(declaration)。
饶文津
2020/06/02
1.5K0
必须为元素类型 “mapper” 声明属性 “namespace” 或The content of element type “mapper” must match “EMPTY”
只需把<!DOCTYPE mapper PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-3-config.dtd”>
全栈程序员站长
2022/06/30
6940
Content-Type的常见类型
前言:什么是Content-Type?它有什么用? Content-Type是内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定文件接收方将以什么形式、什么编码读取这个文件,这就是经常看到一些Asp网页点击的结果却是下载到的一个文件或一张图片的原因,作用就是指示资源头部的MIME类型,media type。Content-Type就是标头用于告诉客户端实际返回的内容类型。
堡主
2023/03/20
6080
Content-Type的常见类型
Spring IOC Notes-Obj Creation Process
Resource (xml annotation class properties/yml) -> BeanDefinition -> BeanWrapper -> Object
itliusir
2018/10/08
7640
day75-<项目>-obj.get_XX_display(),分页的实现
1.设置浏览器的主题图片 image.png 2.设置圆形的图片(图片原来是矩形) image.png 3.注意事项,关于导入 bootstrap image.png 4.注册models里面的表达admin后台 image.png 5.定制admin后台的 verbose_name 和 verbose_name_plural image.png 6.obj.get_XX_display()的使用 模板中使用,没有括号 image.png image.png 后台使用,有括号 image.png image
少年包青菜
2019/10/16
6470
SAP HU 的'Obj.to Which HU Belongs'栏位初探
其'obj.to Which HU belongs'字段值为0000565293.
SAP虾客
2021/03/01
5020
类型擦除type erasure
泛型是java从JDK 5开始引入的新特性,泛型的引入可以让我们在代码编译的时候就强制检查传入的类型,从而提升了程序的健壮度。
程序那些事
2020/07/08
7090
js object 中删除某个元素并且重置obj[obj.splice(1,1)]
 for (var i = 0; i < old.length; i++) {         if(old[i].id==$(spanthis).data("id")){             // old[i].id=0;             // old[i].name='';             old.splice(i,1)         }
双面人
2019/04/10
5.7K0
小说python的类型提示(type hints)
大家都知道python是一门动态类型的语言,但作者Guido van Rossum在2014年创建PEP-484添加了类型提示,在python3.5的版本中正式发布这一特性。 为什么需要类型提示呢?它能给开发者带来哪些便利呢?本文就小说一把type hints。
用户2196567
2018/07/24
7370
CSS中的媒体类型media type[通俗易懂]
首先要明白一点,我们平时写的HTML页面,可能在不同的媒体类型中显示,如可能显示在屏幕sreen上,也可能显示在纸质print上。那么当页面在不同的媒体类型中显示时,需要的样式可能是不一样的。比如,一般在screen上显示时,页面字体要大一些,在纸质媒体显示时,页面字体要小一些。那么如何告诉别人某个样式是适用于何种媒体类型的呢?这就要靠声明media type来实现了。
全栈程序员站长
2022/09/01
1.5K0
【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )
元组 数据容器类型 的 详细 类型注解 , 需要为每个元素都进行类型标记 , 有几个元素就要标记几个类型 ;
韩曙亮
2023/10/11
6000
【Python】类型注解 ③ ( 使用 # type: 类型 注释方式设置类型注解 | 类型注解是提示性而非强制性 )
点击加载更多

相似问题

TypeError: super( type,obj):obj必须是类型的实例或子类型?

136

super( type,obj):obj必须是类型的实例或子类型

95

模拟类型(self,...):TypeError: super( type,obj):obj必须是类型的实例或子类型

10

为什么Super()返回TypeError: super( type,obj):obj必须是类型的实例或子类型

10

基于类的视图-TypeError: super( type,obj):obj必须是类型的实例或子类型

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档