报错:AttributeError: NoneType object has no attribute device

2023-05-16

今天搞个测试,测试是在horovod下进行的。

问题就出在加载权重(参数)文件的地方,加载权重命令load_weights前要先build一下,结果就build出这么一个错误:

Exception ignored in: <bound method _RandomSeedGeneratorDeleter.__del__ of <tensorflow.python.data.ops.dataset_ops._RandomSeedGeneratorDeleter object at 0x7f363100d4e0>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 3462, in __del__
AttributeError: 'NoneType' object has no attribute 'device'

这个报错真的是谜之报错,我根本没搞懂错哪了。但反正是注释掉build这句就不会报错。

于是我脱离horovod,在单纯的tensorflow2.1.0中重写了一下,发现没有问题,可以正常运行。

但是我一开始运行了一下发现报错是这样的:

Traceback (most recent call last):
  File "error.py", line 30, in <module>
    mnist_model.build(input_shape = (None, 28 ,28))
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/sequential.py", line 260, in build
    super(Sequential, self).build(input_shape)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/network.py", line 682, in build
    self.call(x, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/sequential.py", line 281, in call
    outputs = layer(inputs, **kwargs)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/base_layer.py", line 737, in __call__
    self.name)
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/input_spec.py", line 177, in assert_input_compatibility
    str(x.shape.as_list()))
ValueError: Input 0 of layer conv2d is incompatible with the layer: expected ndim=4, found ndim=3. Full shape received: [None, 28, 28]
Exception ignored in: <bound method _RandomSeedGeneratorDeleter.__del__ of <tensorflow.python.data.ops.dataset_ops._RandomSeedGeneratorDeleter object at 0x7f7c76f37320>>
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/data/ops/dataset_ops.py", line 3462, in __del__
AttributeError: 'NoneType' object has no attribute 'device'

可以看到是model.build那句的问题,最后同样是AttributeError: 'NoneType' object has no attribute 'device'。

但是这次的错误提示比较多,里面有个有用信息就是倒数第5行的提示:

ValueError: Input 0 of layer conv2d is incompatible with the layer: expected ndim=4, found ndim=2. Full shape received: [None, 784]

原来是build输入尺度错了,修改正确后发现脱离horovod运行是不会报错的。

 

最后我无意间发现了这样的Warning提示:

[1,0]<stderr>:2020-06-30 08:34:47.818137: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 376320000 exceeds 10% of system memory.
[1,0]<stderr>:2020-06-30 08:34:49.030225: W tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 188160000 exceeds 10% of system memory.

这个提示我就很熟悉了,这是提示memory占用率过高啊。但是我的程序是一个mnist测试程序而已,又是放在相当不错的服务器上运行的,而且服务器我是一个人独占并没有其他任务占用memory,怎么会有这个提示那?同时,https://github.com/tensorflow/tensorflow/issues/35326里面也有人遇见这个错误并提出了一样的怀疑。

为了验证是不是这个问题我观察mem使用率在程序运行的全过程都没看见有超过10%。但是我还是把程序中关于数据处理部分的程序注释掉,发现果然能正常运行没有报错了。所以这个报错究竟是不是memory问题还有待考证,初步判断是和memory有可能有一定关系的。

下面把程序放上来详细说明一下:

import tensorflow as tf
import horovod.tensorflow.keras as hvd
import os
import datetime
import package

time_start = datetime.datetime.now()

# 初始化
Log,arg = package.initial()

# 指定GPU信息和operator
gpus, opt = package.gpu_setting('keras+tensorflow2.0', Log)


(mnist_images, mnist_labels), _ = \
    tf.keras.datasets.mnist.load_data(path='mnist-%d.npz' % hvd.rank())

dataset = tf.data.Dataset.from_tensor_slices(
    (tf.cast(mnist_images[..., tf.newaxis] / 255.0, tf.float32),
             tf.cast(mnist_labels, tf.int64))
)
# dataset = dataset.repeat().shuffle(10000).batch(128)
dataset = dataset.repeat().batch(128)
mnist_model = tf.keras.Sequential([
    tf.keras.layers.Conv2D(32, [3, 3], activation='relu'),
    tf.keras.layers.Conv2D(64, [3, 3], activation='relu'),
    tf.keras.layers.MaxPooling2D(pool_size=(2, 2)),
    tf.keras.layers.Dropout(0.25),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.5),
    tf.keras.layers.Dense(10, activation='softmax')
])

mnist_model.compile(loss=tf.losses.SparseCategoricalCrossentropy(),
                    optimizer=opt,
                    metrics=['accuracy'],
                    experimental_run_tf_function=False)
# weight_file = os.path.join(arg.ckp_path,'checkpoint-break-step-64.h5')
if hvd.rank()==0:
    mnist_model.build(input_shape=(None, 28, 28, 1))
    mnist_model.load_weights('checkpoint-1.h5')

第23行被注释掉的“# dataset = dataset.repeat().shuffle(10000).batch(128)”是原来的程序。

下面第24行“dataset = dataset.repeat().batch(128)”是我修改后的程序。

实验发现,23行换成24行(删除shuffle)就不会报错了。

难道真是内存的事???

只能说有一定关联吧,但应该也不是memory不足引起的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

报错:AttributeError: NoneType object has no attribute device 的相关文章

  • 如何计算嵌套对象的深度?

    我有一个嵌套对象的示例数组 let arr id 0 children id 1 children id 2 children id 3 children id 4 children 我需要计算每个对象的深度级别 在所有对象中我也有一个pa
  • “NoneType”对象在 Django 项目中不可迭代

    当我尝试使用 python manage py runserver ip port 运行我的 django 应用程序时 出现 NoneType 对象不可迭代 错误 而如果我使用 python manage py runserver 0 0
  • Ruby 元编程方法列表?

    刚刚开始学习 Ruby 元编程 看看 Object methods 我得到 Object methods gt allocate new superclass freeze lt gt lt lt gt gt to s included m
  • Objects.deepToString(Object o) 方法

    班上java util Objects包含deepEquals Object a Object b 可用于比较任何类型的对象 包括数组和空引用 的方法 但不包含类似的方法deepToString Object o 这令人失望 顺便说一下 这
  • JavaScript 对象的动态深度设置[重复]

    这个问题在这里已经有答案了 给定对象属性路径的字符串 如何动态设置此属性 给定这个示例对象 var obj a b c Before 它应该能够使用如下辅助函数设置值 setToValue obj After a b 0 c 我用下面的代码
  • for 循环内的 Promise 的 setTimeout

    我想做的是这样的 循环数据集合 对于每个数据元素调用 API 等待 Promise 失败或解析 暂停 30 秒 然后对下一个数据元素再次执行此操作 直到没有任何内容可以迭代集合 最后显示 完成 消息 到目前为止 这是我编写的代码 在其他问题
  • 全局变量是 None 而不是实例 - Python

    我正在处理Python 中的全局变量 代码应该可以正常工作 但是有一个问题 我必须使用全局变量作为类的实例Back 当我运行应用程序时 它说 back is None 这应该不是真的 因为第二行setup 功能 back Back Back
  • 在 Objective-C 中获取对象的属性数组

    Objective C 中是否可以获取对象所有属性的数组 基本上 我想做的是这样的 void save NSArray propertyArray self propertyNames for NSString propertyName i
  • JS如何获取多维数组的最大深度?

    我有一个多维数组 我想知道它的最大深度 我发现了这个灵魂 但它不适用于对象数组 const getArrayDepth arr gt return Array isArray arr 1 Math max arr map getArrayD
  • 统一;随机物体移动[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在制作一款机器人战斗游戏 我希望敌人随机移动 然后有时会向敌人移动 我希望运动包含在其中的代码 else if avoid fal
  • 何时使用“原型”一词向 JavaScript 中的对象添加新属性?

    我不明白在 JavaScript 中何时使用 原型 一词 以及何时使用不带 原型 一词的简单 点 表示法 有人可以查看这些代码块并帮助我理解您何时想要使用其中一个而不是另一个吗 with 原型 function employee name
  • 匿名添加对象时从ArrayList获取特定对象?

    我创建了一个关于我的问题的简短示例 我正在匿名创建一个对象列表并将它们添加到ArrayList 一旦物品进入ArrayList我稍后回来并向列表中的每个对象添加更多信息 如果您不知道其索引 有没有办法从列表中提取特定对象 我只知道对象的 名
  • 显示对象内容 - JS/jQuery

    With this data events 返回 object Object 我需要看看里面到底发生了什么 我找到了这个 var Finder each this data events function i n Finder Name i
  • 减少 JavaScript 中的对象数组

    我在 javascript 中有一个想要减少的对象数组 请参阅下面的代码 6 位或以上的消息已验证 较少的消息未验证 我将他们按组分组 const myArray group groupA message Text without a nu
  • 当我尝试在 PHP 中访问类变量时,类变量为 null

    好吧 这是我的主要代码 require checkpassword php require mysqllogininfo php Validate password if validatePassword GET password retu
  • 按值数组过滤对象数组中的嵌套数组

    考虑以下对象数组 guid j5Dc9Z courses id 1 name foo guid a5gdfS courses id 2 name bar
  • java中可以有switch(java.lang.Object)吗?

    我的应用程序需要有类型的 switch case 语句String 我需要这样的东西 Object list1 list1 Object list2 list2 Object list3 list3 Object option list1
  • 在另一个类中使用一个类对象?

    我正在用 c 制作应用程序 在该应用程序中 我有一个类DataCapture cs 在同一个应用程序中 我有另一个类Listner cs 在 Listner cs 类中 我想使用以下对象DataCapture cs不创建新对象DataCap
  • 如何在 unity3d C# 中让相机跟随物体?

    我有一个名为 Ball 的对象 我向它添加了键盘交互性 WASD 来移动球 我需要摄像机留在后面并跟随球 但我遇到了错误 using UnityEngine using System Collections public class bal
  • 创建动态多维对象/数组

    我正在尝试使用 JS 创建一个多维数组 以便我可以通过 Ajax 调用 PHP 来发布一些数据 这可能很简单 但我对 JS 的了解很少关于这个具体的事情 这是带有代码的 JSFiddle http jsfiddle net k5Q3p 我想

随机推荐

  • FreeRTOS解析:TCB_t结构体及重要变量说明(Task-1)

    FreeRTOS解析 xff1a TCB t结构体及重要变量说明 xff08 Task 1 xff09 受博客限制 xff0c 如果您想获得更好的阅读体验 xff0c 请前往https github com Nrusher FreeRTOS
  • 深度学习与slam的小小思考

    深度学习与slam的小小思考 好久不发文章了 xff0c 主要是研究的东西因为要发论文 xff0c 所以发表之前很难分享出来 xff0c 加上研一上学期老师安排的工作比较琐碎 xff0c 所以更新的很少 不过研一下可能会好些 xff0c 立
  • IT运维人员必看!超全信息化建设之运维资料

    随着IT建设的不断深入和完善 计算机硬软件系统的运行维护已经成为了各行各业各单位领导和信息服务部门普遍关注和不堪重负的问题 xff0c 据统计 xff0c IT运维服务占到IT部门工作量的80 左右 IT运维普遍存在以下现象 xff1a 1
  • ovn原理与实践

    上篇文章简单介绍了ovs Open Virtual Switch 的原理和使用 xff0c 但是仔细想想 xff0c 单纯的ovs在云计算领域还存在着一些问题 xff0c 例如 xff1a ovs只能做二层转发 xff0c 没有三层的能力
  • 基于51单片机智能电子密码锁电路设计(毕设课设)

    基于AT89C51单片机的简易六位密码锁 输入三次锁定 密码输入错误蜂鸣器和LED灯报警 可以修改密码 资源下载 下载地址如下 xff08 912 xff09 xff1a https docs qq com doc DTlRSd01BZXN
  • CentOS7配置tomcat开机自启动

    文章目录 CentOS7配置tomcat开机自启动创建服务创建软连接刷新配置启动 重启 停止 状态开启自启动 关闭自启动 CentOS7配置tomcat开机自启动 创建服务 在 lib systemd system目录下创建一个脚本文件to
  • Jetson TX2 入门 ——打开摄像头

    Jetson TX2自带有一个板载摄像头 xff0c 当然也可以在TX2上连接usb摄像头和csi摄像头 1 打开板载摄像头 1 xff09 方法一 xff1a 视屏分辨率预览 nvgstcapture 1 0 prev res 61 3
  • 输入一个int型整数,按照从右向左的阅读顺序,返回一个不含重复数字的新的整数。

    package cn itcast test06 public class Test08 方法1 public static int method int num boolean flag 61 num gt 0 true false nu
  • 史上最强,Cas单点登录之服务端搭建

    目录 Cas Server搭建大浪淘沙 xff0c 沉者为金弱水三千 xff0c 只取一瓢 服务端配置介绍最常用的三个配置文件最常用的三个JSP页面 自定义数据源关闭HTTPS协议开启Restful接口1 加入jar包 2 配置web xm
  • C#创建子窗体、父窗体

    本文部分内容来自书籍 多文档界面 xff08 Multiple Document Interface xff0c MDI xff09 xff0c 其窗体用于同时显示多个文档 xff0c 每个文档显示在各自的窗口中 在MDI窗体中 xff0c
  • k8s部署报错network: failed to find plugin “flannel“ in path [/opt/cni/bin]]

    k8s在部署工作负载时 xff0c pod详情页提示以下问题 Failed to create pod sandbox rpc error code 61 Unknown desc 61 failed to set up sandbox c
  • VS各版本VC各版本对应关系

    Visual Studio 经过多年的发展 xff0c 有许多版本 xff0c 经常我们在拿到一份代码时不知道对应的VS版本 这时候可以打开工程目录下的vcproj vcxproj文件 xff0c 如下所示 span class token
  • 浅谈机场综合布线运维工作中的难点问题

    随着系统规模越来越大 体系越来越复杂 信息系统的作用越来越明显 运维保障的要求越来越高 xff0c 综合布线维护工作面临的问题也愈加凸显 以下以国内某大型机场在综合布线运维工作中面临的实际问题为例 xff0c 给大家分享综合布线运维利器 耐
  • 关于集成商转型

    前言 xff1a 集成商转型是一个老生常谈的话题 xff0c 集成服务一直以来就随着IT行业趋势而发展 xff0c IT行业从最初的硬件主导到硬件软件化 xff0c 再到软件服务化 xff0c 大趋势或将发展至服务产品化 xff0c 行业趋
  • centos系统开启vncserver

    yum y install tigervnc server 这个是安装命令 安装好以后输入vncserver就能开启 第一次开启会让设置密码 这个密码是用户vncclient 连接的时候需要输入的密码 vncserver kill 1 这个
  • 升降横移式立体车库设计机械设计毕业设计全套资料

    资源下载 下载地址如下1502 xff1a https docs qq com doc DTlRSd01BZXNpRUxl 本文选用了社会需求大 xff0c 最常见的一种立体车库 升降横移式立体停车库 介绍和分析了升降横移式立体停车库的结构
  • 在NVIDIA Jetson 平台上运行Deepstream速度慢的常见解决办法

    NVIDIA发布了最新的Deepstream 4 0 光说不练假把式 xff0c 光练不说傻把式 xff0c 不少用户发现在Jetson嵌入式平台上运行Deepstream会遭遇到速度变慢 xff0c 今天汇总几个常见解决方案 xff1a
  • Ubuntu18.04 安装ROS Melodic(官方版) 之不使用科学方法

    此前记录了官方安装流程 xff0c 参见Ubuntu18 04 安装ROS Melodic 官方版 xff0c 但是受限于无法访问raw githubusercontent com xff0c 需科学方法才能成功安装 xff0c 带来诸多不
  • 分层存储Stratis和管理快照

    分层存储Stratis Stratis称为卷管理文件系统 xff0c 以管理物理存储设备池的服务形式运行 xff0c 透明的为所创建的文件系统创建和管理卷 相较于Lvm操作简化了 xff0c Stratis可以动态管理卷层 xff0c 不需
  • 报错:AttributeError: NoneType object has no attribute device

    今天搞个测试 xff0c 测试是在horovod下进行的 问题就出在加载权重 xff08 参数 xff09 文件的地方 xff0c 加载权重命令load weights前要先build一下 xff0c 结果就build出这么一个错误 xff