kaiwang960112 / Self-Cure-Network

This is a novel and easy method for annotation uncertainties.
404 stars 98 forks source link

您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 #81

Closed cotyyang closed 6 months ago

cotyyang commented 1 year ago

我打印了加载预训练前后的部分层的参数,发现没有更改。 并且line154很奇怪,因为152行的操作,这里是一定为True吧。

Delete12137 commented 1 year ago

你好我也发现了这样的情况。请问你解决了吗 image

cotyyang commented 1 year ago

`if args.pretrained: print("Loading pretrained weights...", args.pretrained) pretrained = torch.load(args.pretrained) pretrained_state_dict = pretrained['state_dict']

import pickle

# with open(args.pretrained, 'rb') as f:
#     obj = f.read()
model_state_dict = res18.state_dict()
loaded_keys = 0
total_keys = 0
# for key, w in pickle.loads(obj, encoding='latin1').items():
for key in pretrained_state_dict:
    # key1 = key[7:]
    if ((key == 'module.fc.weight') | (key == 'module.fc.bias')):
        pass
    elif ((key == 'fc.weight') | (key == 'fc.bias')):
        pass
    else:
        if key in model_state_dict:
            loaded_keys += 1
        model_state_dict[key] = pretrained_state_dict[key]
        # model_state_dict[key] = torch.from_numpy(w)
        total_keys += 1
print("Loaded params num:", loaded_keys)
print("Total params num:", total_keys)
res18.load_state_dict(model_state_dict, strict=False)`
cotyyang commented 1 year ago

image 格式有点问题。我最后是这样的解决的

Delete12137 commented 1 year ago

好的,我明天试试看,非常感谢

@.***

@.*** |

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月03日 22:11 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) |

格式有点问题。我最后是这样的解决的

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

cotyyang commented 1 year ago

好的,我明天试试看,非常感谢 | | @. | | @. | ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月03日 22:11 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) | 格式有点问题。我最后是这样的解决的 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

没事,我当时也是搞了半天才解决

Delete12137 commented 1 year ago

你好,我试了一下发现还是没有加载进去预训练权重。你这个代码好像就是把原来的语句换了一下顺序。 image image

cotyyang commented 1 year ago

你好,我试了一下发现还是没有加载进去预训练权重。你这个代码好像就是把原来的语句换了一下顺序。 image image

对了,我还换了个预训练模型,用的这个链接里面的 https://github.com/zyh-uaiaaaa/Relative-Uncertainty-Learning/issues/11

Delete12137 commented 1 year ago

这个预训练模型我之前也用过,对于这种标准的resnet18预训练模型可以直接用下面的代码初始化模型 image 我不会的就是不知道怎么利用像SCN这篇文章中的一样的预训练模型来初始化(即预训练模型的key值和标准的resnet18不一样,不好找到一一对应)

cotyyang commented 1 year ago

这个预训练模型我之前也用过,对于这种标准的resnet18预训练模型可以直接用下面的代码初始化模型 image 我不会的就是不知道怎么利用像SCN这篇文章中的一样的预训练模型来初始化(即预训练模型的key值和标准的resnet18不一样,不好找到一一对应)

image 我刚试了下,这样就好了

Delete12137 commented 1 year ago

还是不行呀 image 感觉就算key1把key的module给去掉还是和res18的不一样。我知道应该是写代码把预训练模型里的key值改变成resnet18里的key值(这样就能更新resnet18的模型参数了),但不知道该怎么改能够准确地一一对应上

我想探究一下不同预训练模型对baseline的影响,但是之前看的好多论文基本上都是用的同一个预训练模型(你之前说的那个RUL里的预训练模型和我之前用的也是一样)

Delete12137 commented 1 year ago

可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 image

非常感谢!有了一个成功案例以后就知道该咋改了

cotyyang commented 1 year ago

可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 image

非常感谢!有了一个成功案例以后就知道该咋改了

没事

muzimudong commented 1 year ago

可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 image 非常感谢!有了一个成功案例以后就知道该咋改了

没事

你好,但是这样虽然可以训练,但是测试时好像还是有问题,无法对应上,你们知道怎么解决吗

Delete12137 commented 1 year ago

我的源代码就是这样写的,然后debug也能看出来模型的参数被成功更新为预训练的权重了。你要不在检查检查代码?

@.***

@.*** |

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月09日 23:45 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) |

可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 非常感谢!有了一个成功案例以后就知道该咋改了

没事

你好,但是这样虽然可以训练,但是测试时好像还是有问题,无法对应上,你们知道怎么解决吗

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

muzimudong commented 1 year ago

我的源代码就是这样写的,然后debug也能看出来模型的参数被成功更新为预训练的权重了。你要不在检查检查代码? | | @. | | @. | ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月09日 23:45 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) | 可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 非常感谢!有了一个成功案例以后就知道该咋改了 没事 你好,但是这样虽然可以训练,但是测试时好像还是有问题,无法对应上,你们知道怎么解决吗 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

我现在在使用的是一个第三方复现的代码,很奇怪的是,我将那个代码预训练部分变为和官方一样时,预训练参数好像加载进去了,第一轮的验证集精度就有0.69几,这应该是加载进去了吧。另外,我最近也在研究这篇论文代码,不知能否加个联系方式,请教一下呢?

Delete12137 commented 1 year ago

这篇文章我没有复现过,因为很多把他当benchmark我就看了看,顺便拿他的预训练模型跑一下baseline,联系方式就算了吧,不太习惯加陌生人,抱歉

@.***

@.*** |

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月10日 00:11 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) |

我的源代码就是这样写的,然后debug也能看出来模型的参数被成功更新为预训练的权重了。你要不在检查检查代码? | | @. | | @. | … ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月09日 23:45 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) | 可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 非常感谢!有了一个成功案例以后就知道该咋改了 没事 你好,但是这样虽然可以训练,但是测试时好像还是有问题,无法对应上,你们知道怎么解决吗 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

我现在在使用的是一个第三方复现的代码,很奇怪的是,我将那个代码预训练部分变为和官方一样时,预训练参数好像加载进去了,第一轮的验证集精度就有0.69几,这应该是加载进去了吧。另外,我最近也在研究这篇论文代码,不知能否加个联系方式,请教一下呢?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

muzimudong commented 1 year ago

好的,谢谢您,祝您生活愉快!

夜空中最亮的星 @.***

 

------------------ 原始邮件 ------------------ 发件人: "kaiwang960112/Self-Cure-Network" @.>; 发送时间: 2023年4月10日(星期一) 凌晨0:16 @.>; @.**@.>; 主题: Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81)

这篇文章我没有复现过,因为很多把他当benchmark我就看了看,顺便拿他的预训练模型跑一下baseline,联系方式就算了吧,不太习惯加陌生人,抱歉

@.***

@.*** |

---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月10日 00:11 | | 收件人 | @.> | | 抄送至 | @.>@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) |

我的源代码就是这样写的,然后debug也能看出来模型的参数被成功更新为预训练的权重了。你要不在检查检查代码? | | @. | | @. | … ---- 回复的原邮件 ---- | 发件人 | @.> | | 日期 | 2023年04月09日 23:45 | | 收件人 | @.> | | 抄送至 | @.@.> | | 主题 | Re: [kaiwang960112/Self-Cure-Network] 您好,我发现src/train.py文件中的加载预训练部分 没有把您给的预训练权重加载进去 (Issue #81) | 可以了,我把初始化移到了模型的类里面,然后你的代码就能够成功把预训练模型里的key值一一对应地改变成resnet18里的key值 非常感谢!有了一个成功案例以后就知道该咋改了 没事 你好,但是这样虽然可以训练,但是测试时好像还是有问题,无法对应上,你们知道怎么解决吗 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.>

我现在在使用的是一个第三方复现的代码,很奇怪的是,我将那个代码预训练部分变为和官方一样时,预训练参数好像加载进去了,第一轮的验证集精度就有0.69几,这应该是加载进去了吧。另外,我最近也在研究这篇论文代码,不知能否加个联系方式,请教一下呢?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.> — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.>