智晨爱代码 2024-05-19 16:10 采纳率: 71.4%
浏览 3
已结题

AttributeError: 'PatchTrainer' object has no attribute 'seeds_tshirt'

当我运行一段代码的时候,报错

Traceback (most recent call last):
  File "/home/wang/Desktop/wjl-project/Adversarial_camou-main/Visualize-Shirts.py", line 43, in <module>
    tex,tex_trouser = trainer.update_mesh(type='determinate')
  File "/home/wang/Desktop/wjl-project/Adversarial_camou-main/train.py", line 354, in update_mesh
    gb_tshirt = -(-(self.seeds_tshirt + 1e-20).log() + 1e-20).log()
AttributeError: 'PatchTrainer' object has no attribute 'seeds_tshirt'

下面是我跳转到错误的350行代码的位置,我不知道是什么引起的错误。

    def update_mesh(self, tau=0.3, type='gumbel'):
        # camouflage:
        # print(f'Updating mesh with seeds_tshirt: {self.seeds_tshirt}')
        # print(f'Updating mesh with seeds_trouser: {self.seeds_trouser}')
        prob_map = prob_fix_color(self.tshirt_point, self.coordinates, self.colors, self.h, self.w, blur=self.args.blur).unsqueeze(0)
        prob_trouser = prob_fix_color(self.trouser_point, self.coordinates_t, self.colors, self.h_t, self.w_t, blur=self.args.blur).unsqueeze(0)
        prob_map = self.camouflage_kernel(prob_map)
        prob_trouser = self.camouflage_kernel(prob_trouser)
        prob_map = prob_map.squeeze(0).permute(1, 2, 0)
        prob_trouser = prob_trouser.squeeze(0).permute(1, 2, 0)

        gb_tshirt = -(-(self.seeds_tshirt + 1e-20).log() + 1e-20).log()
        gb_trouser = -(-(self.seeds_trouser + 1e-20).log() + 1e-20).log()

        tex = gumbel_color_fix_seed(prob_map, gb_tshirt, self.colors, tau=tau, type=type)
        tex_trouser = gumbel_color_fix_seed(prob_trouser, gb_trouser, self.colors, tau=tau, type=type)

        tex = self.expand_kernel(self.color_transform(tex.permute(0, 3, 1, 2))).permute(0, 2, 3, 1)
        tex_trouser = self.expand_kernel(self.color_transform(tex_trouser.permute(0, 3, 1, 2))).permute(0, 2, 3, 1)

        self.mesh_tshirt.textures = TexturesUV(maps=tex, faces_uvs=self.faces, verts_uvs=self.verts_uv)
        self.mesh_trouser.textures = TexturesUV(maps=tex_trouser, faces_uvs=self.faces_trouser, verts_uvs=self.verts_uv_trouser)

        return tex, tex_trouser
  • 写回答

1条回答 默认 最新

  • 阿里嘎多学长 2024-05-19 16:28
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    【您想要解决的问题】:您提问的目的是解决在运行Python代码时遇到的AttributeError: 'PatchTrainer' object has no attribute 'seeds_tshirt'错误。

    【问题出现原因】:根据错误信息和代码段,问题出现的原因是PatchTrainer类的实例中没有定义seeds_tshirt属性。当尝试访问self.seeds_tshirt时,Python无法在PatchTrainer类的实例中找到这个属性,因此抛出了AttributeError

    【问题解决方案】:要解决这个问题,您需要确保PatchTrainer类中有一个名为seeds_tshirt的属性,或者在创建PatchTrainer对象之前正确地初始化这个属性。

    【提供代码】:以下是解决这个问题的一种方法,即在PatchTrainer类的初始化方法中添加seeds_tshirt属性的初始化:

    class PatchTrainer:
        def __init__(self, ...):
            # 其他初始化代码...
            self.seeds_tshirt = None  # 或者初始化为一个合适的值
            self.seeds_trouser = None  # 同样,如果这个属性也被使用的话
    
        # ... 其他方法...
    

    如果您已经有了seeds_tshirt的合适值,您可以在创建PatchTrainer对象后立即设置这个属性:

    trainer = PatchTrainer(...)
    trainer.seeds_tshirt = your_seeds_tshirt_value  # 替换为实际的种子值
    

    【代码运行方式】:确保您的Python环境已经安装了所有必要的依赖,并且您的代码文件是正确的。运行您的Python脚本通常只需要在命令行中输入python script_name.py,其中script_name.py是您的脚本文件名。

    【代码预期运行结果】:

    # 如果代码修改正确,预期不会再次出现AttributeError错误。
    # 程序应该能够正常运行,输出应该是tex和tex_trouser变量的值。
    

    【推荐相关链接】:

    1. Python AttributeError官方文档
    2. Python 类和对象
    3. Python 属性管理

    请注意,这些链接提供了Python编程语言中关于错误处理、类定义和属性管理的一般信息,它们可以帮助您更好地理解问题和解决方案。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月28日
  • 已采纳回答 5月20日
  • 修改了问题 5月19日
  • 修改了问题 5月19日
  • 展开全部

悬赏问题

  • ¥15 远程访问linux主机超时
  • ¥15 odoo17存货管理优势于中国国内该行业传统ERP或MES的详细解读和举例
  • ¥15 CPU卡指令整合指令数据都在图片上
  • ¥15 odoo17处理受托加工产品
  • ¥15 如何用MATLAB编码图三的积分
  • ¥15 圆孔衍射光强随孔径变化
  • ¥15 MacBook pro m3max上用vscode运行c语言没有反应
  • ¥15 ESP-PROG配置错误,ALL ONES
  • ¥15 结构功能耦合指标计算
  • ¥50 AI大模型精调(百度千帆、飞浆)