21学习小记

if not isinstance 这段代码是Python中用于检查一个对象是否不是某个类(或类型)的实例的条件语句的一部分。isinstance() 函数是Python的内置函数,用于判断一个对象是否是一个已知的类型,类似类型判断。当你将not关键字与isinstance()函数结合使用时,你实际上是在进行反向判断:即检查该对象不是指定的类型。

这里是一个简单的例子来说明它的用法:

python复制代码

x = 5
# 检查x是否不是字符串类型
if not isinstance(x, str):
print("x不是一个字符串")
else:
print("x是一个字符串")
# 输出将会是: x不是一个字符串

在这个例子中,x被赋值为整数5,然后通过if not isinstance(x, str):判断x是否不是字符串类型。因为x确实不是字符串类型,所以条件为真,执行了if语句块内的代码,输出了"x不是一个字符串"

isinstance()函数对于多态性(polymorphism)和类型安全(type safety)的编程实践非常有用,尤其是在需要确保对象类型符合特定要求时。通过结合使用not关键字,可以灵活地处理不满足特定类型要求的情况。

在这个示例中,模型在每次验证后都切换回训练模式,以确保训练过程中 dropoutbatch normalization 等操作的正常使用。

nn.DataParallel 是 PyTorch 中的一个类,用于在多个 GPU 上并行地执行模型的前向和反向传播,以加速训练过程。当你有多个 GPU 可用时,nn.DataParallel 可以帮助你将模型的计算分布到这些 GPU 上,从而提高训练速度。

构建一个包含优化器状态的字典 opt_state,包括当前的训练周期 epoch、迭代步数 iter_step 以及优化器的状态字典。将这个字典保存到文件 opt_path 中。

gen_path = os.path.join(self.opt['path']['checkpoint'], 'I{}_E{}_gen.pth'.format(iter_step, epoch))
opt_path = os.path.join(self.opt['path']['checkpoint'], 'I{}_E{}_opt.pth'.format(iter_step, epoch))

这段代码使用 os.path.join 方法将保存路径 self.opt['path']['checkpoint'] 和文件名结合在一起。文件名的格式是通过 format 方法生成的,其中 iter_stepepoch 是变量,它们的值会在运行时被替换。

假设 self.opt['path']['checkpoint']/path/to/checkpoint,并且在调用该函数时,iter_step 的值为 1000,epoch 的值为 5,那么生成的文件命名形式如下:

  • gen_path 会生成:/path/to/checkpoint/I1000_E5_gen.pth
  • opt_path 会生成:/path/to/checkpoint/I1000_E5_opt.pth

再举几个不同的例子:

  • 如果 iter_step 为 500,epoch 为 2:

    • gen_path 会生成:/path/to/checkpoint/I500_E2_gen.pth
    • opt_path 会生成:/path/to/checkpoint/I500_E2_opt.pth
  • 如果 iter_step 为 2000,epoch 为 10:

    • gen_path 会生成:/path/to/checkpoint/I2000_E10_gen.pth
    • opt_path 会生成:/path/to/checkpoint/I2000_E10_opt.pth

通过这种命名方式,可以很容易地识别每个保存文件对应的具体迭代步数和训练周期。

所以model.py 模型里面的代码有对应模型的生成

对应output的  checkpoint。

构建保存模型和优化器状态的文件路径。gen_path 用于保存生成器网络的状态,opt_path 用于保存优化器的状态。文件名包含了当前的迭代步数和训练周期,以便于区分不同的保存点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值