程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AttributeError: 模块 'utils' 没有属性 'read'大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决AttributeError: 模块 'utils' 没有属性 'Read'?

开发过程中遇到AttributeError: 模块 'utils' 没有属性 'Read'的问题如何解决?下面主要结合日常开发的经验,给出你关于AttributeError: 模块 'utils' 没有属性 'Read'的解决方法建议,希望对你解决AttributeError: 模块 'utils' 没有属性 'Read'有所启发或帮助;

我正在尝试使用 PyTorch 训练模型,但出现此错误 AttributeError: module 'utils' has no attribute 'read'

在主项目中,我有文件 utils.pyx,而且我在此特定行中遇到错误 for i,data in enumerate(Trainloader):

这是有问题的代码(如果您对此问题有任何想法,请告诉我谢谢)

import os
import copy
import torch
import torch.nn as nn
import torch.optim as optim
import torch.utils.data
import numpy as np
import matplotlib.pyplot as plt
#from dataset import NTUSkeletonDataset
from torch.utils.data import Dataset,DataLoader
#import GAN
from torch.autograd import Variable
import matplotlib.pyplot as plt
import time

# Root directory for dataset
daTaroot = "Data/nturgb+d_skeletons"

# Batch size during Training
batch_size = 5

# Size of z latent vector (i.e. size of generator input)
latent_dim = 20

# number of Training epochs
num_epochs = 200

# Learning rate for optimizers
lrG = 0.00005
lrD = 0.00005

clip_value = 0.01
n_critic = 20

Trainset = NTUSkeletonDataset(root_dir=daTaroot,pinpoint=10)
Trainloader = DataLoader(Trainset,batch_size=batch_size,shuffle=True,num_workers=4)

cuda = torch.cuda.is_available()
device = torch.device("cuda:0" if cuda else "cpu")
Tensor = torch.cuda.floatTensor if cuda else torch.floatTensor

generator = Gen0(latent_dim).to(devicE)
discriminator = dis0().to(devicE)

optimizer_G = torch.optim.RMSprop(generator.parameters(),lr=lrG)
optimizer_D = torch.optim.RMSprop(discriminator.parameters(),lr=lrD)

epoch_loss = np.zeros((num_epochs,3,len(Trainloader)//n_critic+1))

for epoch in range(num_epochs):
    j = 0
    print("Boucle 1")
    epoch_start = time.time()
    for i,data in enumerate(Trainloader):
        print("something")
        size = (-1,data.size(-1))
        data = data.reshape(sizE)
        print
        optimizer_D.zero_grad()

        real_skeleton = Variable(data.type(Tensor)).to(devicE)

        critic_real = -torch.mean(discriminator(real_skeleton))
        # critic_real.BACkWARD()

        # sample noise as generator input
        z = torch.randn(real_skeleton.size(0),latent_dim).to(devicE)

        # Generate a batch of fake skeleton
        fake_skeleton = generator(z).detach()

        critic_fake = torch.mean(discriminator(fake_skeleton))
        # critic_fake.BACkWARD()

        loss_D = critic_real + critic_fake
        loss_D.BACkWARD()

        optimizer_D.step()

        # clip weights of discriminator
        for p in discriminator.parameters():
            p.data.clamp_(-clip_value,clip_value)

        # Train the generator every n_critic iterations:
        if i % n_critic == n_critic - 1:
            optimizer_G.zero_grad()

            # Generate a batch of
            gen_skeleton = generator(z)
            # adversarial loss
            loss_G = -torch.mean(discriminator(gen_skeleton))

            loss_G.BACkWARD()
            optimizer_G.step()

            for k,l in enumerate((loss_G,critic_real,critic_fakE)):
                epoch_loss[epoch,k,j] = l.item()
            j += 1

    epoch_end = time.time()
    print('[%d] time eplased: %.3f' % (epoch,epoch_end-epoch_start))
    for k,l in enumerate(('G','critic real','critic fake')):
        print('\t',l,epoch_loss[epoch,k].mean(axis=-1))

    if epoch % 20 == 19:
        m = copy.deepcopy(generator.state_Dict())
        torch.save(m,'gen0_%d.pt' % epoch)

np.save('gen0_epoch_loss.npy',epoch_loss)

完整的错误是:

AttributeError: 模块 'utils' 没有属性 'read'

utils.pyx

#cython: language_level=3
import numpy as np
cimport numpy as np
import os
cimport cython

def read(fname,max_bodIEs=2):
    with open(fname,'r') as f:
        num_frames = int(f.readline())
        keypoints = np.zeros((2,num_frames,25,2),dtype=np.float64)

        for t in range(num_frames):
            num_bodIEs = int(f.readline())

            for m in range(num_bodIEs):
                f.readline() # Body info,skip
                num_keypoints = int(f.readline())
                for k in range(num_keypoints): # Read joints
                    x,y = f.readline().split()[:2]
                    if m >= max_bodIEs:
                        conTinue

                    keypoints[m,t,0] = x
                    keypoints[m,1] = y
    return keypoints


@cython.boundscheck(false)
@cython.wraparound(false)
@cython.initializedcheck(false)
@cython.cdivision(true)
cpdef voID ins_frames(double[:,:,::1] buf,double[:,::1] data,int diff):
    cdef int n0 = data.shape[1]
    cdef int i = 0
    cdef int j = 0
    cdef int k = 0
    cdef int l = 0
    cdef double v = 0
    cdef int count = 0

    inDices = np.linspace(1,n0,num=diff,endpoint=false,dtype=np.int32) \
              + np.arange(diff,dtype=np.int32)
    cdef np.ndarraY[np.int32_t,ndim=1] to_ins = inDices

    for i in range(to_ins.shape[0]):
        buf[0,to_ins[i],0] = -10000001 # Marker

    recur = 0

    for i in range(buf.shape[1]):
        if buf[0,i,0] == -10000001:
            recur += 1
            conTinue

        for j in range(2):
            for k in range(25):
                for l in range(2):
                    v = data[j,count,l]
                    buf[j,l] = v # copy
                    if recur != 0: # Calculate the mean
                        buf[j,i-1,l] = (v + data[j,count-1,l]) * 0.5

        if recur > 0: recur -= 1 # reset

        count += 1

为了更好地了解整个代码,您可以在此处找到我的 notebook。以及 dataset。

解决方法

当我做了 pip install utils 并尝试:

>> import utils
>> utils.read()

我得到了 AttributeError: module 'utils' has no attribute 'read'。我认为您的代码也发生了同样的事情。

尝试重命名您的 utils.pyx(例如 @H_905_3@myutils.pyx)并更改:

f = utils.read(...)

到:

f = myutils.read(...)

别忘了先导入。

大佬总结

以上是大佬教程为你收集整理的AttributeError: 模块 'utils' 没有属性 'read'全部内容,希望文章能够帮你解决AttributeError: 模块 'utils' 没有属性 'read'所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。