导入包错误但代码可以运行什么原因
您好,我无法克隆仓库,出现 $ git clone --recurse-submodules [email protected]:Bobholamovic/CDLab.git Cloning into 'CDLab'... [email protected]: Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. 所以我是直接下载的仓库,发现没有core下面的那些.py文件,所以自己从仓库复制了一份到core下,代码是正常运行,但是from utils.data_utils.misc import ( to_array, to_pseudo_color, quantize_8bit as quantize ) from utils.utils import HookHelper from utils.metrics import (Meter, Precision, Recall, Accuracy, F1Score)包的导入提示飘红,我去检查utils文件夹有__init__.py,虽然可以跑但是感觉不对劲,不带劲。。
解决了克隆的问题,SSH 密钥未生成或未配置到 GitHub,使用ssh需要配置密钥,但是包的导入还是有问题
请问是如何执行脚本的呢
请问是如何执行脚本的呢 您好。感谢回复,pycharm的terminal输入命令行 python train.py train --exp_config /mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml
最初的目的只是想找找ssn的输入是不是做了rgb转xylab格式3通道到5通道(因为我发现在escnet_trainer中有句代码pred, pred_ds, Q, ops, cvrted_feats = self.model(t1[:,3:], t2[:,3:], merge=self.merge)列表切片直接把原来8通道变成5通道,不知道想的对不对,这样是不是丢了信息),以及ssn的重构损失和紧凑性损失的输入是什么?
现在发现自己不会的基础越来越多,跑偏了
这个仓库的训练代码相当集成,自己之前的训练代码有点拉,我太菜了,debug不明白从train.py是如何通过配置-exp_config到escnet_trainer.py训练的,想自己打断点去escnet_trainer去一步一步debug,配置参数 --exp_config "/mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml" train后也进不去
python train.py train --exp_config /mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml
如果没有修改代码的话,执行这条指令应该能够让各个package被import。导入提示飘红、但运行时不报错可能和IDE的linter设置有关。
列表切片直接把原来8通道变成5通道,不知道想的对不对,这样是不是丢了信息),以及ssn的重构损失和紧凑性损失的输入是什么
关于那两个输入是什么,这个我也忘了额,时间有点儿久了……和论文里应该是对齐的,具体可以参考下论文呢~
这个仓库的训练代码相当集成,自己之前的训练代码有点拉,我太菜了,debug不明白从train.py是如何通过配置-exp_config到escnet_trainer.py训练的,想自己打断点去escnet_trainer去一步一步debug,配置参数 --exp_config "/mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml" train后也进不去
不用妄自菲薄吧,大家都是从打基础开始一步一步来的。你有看不懂的代码可以贴在这里,我们可以交流一下
python train.py train --exp_config /mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml
如果没有修改代码的话,执行这条指令应该能够让各个package被import。导入提示飘红、但运行时不报错可能和IDE的linter设置有关。
列表切片直接把原来8通道变成5通道,不知道想的对不对,这样是不是丢了信息),以及ssn的重构损失和紧凑性损失的输入是什么
关于那两个输入是什么,这个我也忘了额,时间有点儿久了……和论文里应该是对齐的,具体可以参考下论文呢~
这个仓库的训练代码相当集成,自己之前的训练代码有点拉,我太菜了,debug不明白从train.py是如何通过配置-exp_config到escnet_trainer.py训练的,想自己打断点去escnet_trainer去一步一步debug,配置参数 --exp_config "/mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml" train后也进不去
不用妄自菲薄吧,大家都是从打基础开始一步一步来的。你有看不懂的代码可以贴在这里,我们可以交流一下
好的好的,谢谢您,时间确实久了,哈哈
(1)整个代码只有训练完才会保存权重吗? (2)这个FeatureConverter是什么作用,rgb转xylab吗? class FeatureConverter: def init(self, eta_pos, gamma_clr, offsets): super().init() self.eta_pos = eta_pos self.gamma_clr = gamma_clr self.offsets = torch.Tensor(offsets).view(1,len(offsets),1,1)
@torch.no_grad()
def __call__(self, feats, nw_spixels, nh_spixels):
# Do not require grad
b, c, h, w = feats.size()
scale_pos, scale_clr = get_scale_factors(self.eta_pos, self.gamma_clr, nw_spixels, nh_spixels, w, h)
scales = torch.Tensor((scale_pos,)*2+(scale_clr,)*(c-2))
scales.resize_(1,c,1,1)
return feats * scales.type_as(feats) + self.offsets.type_as(feats)
上面这段代码在ssn中调用了
def forward(self, x):
if self.training:
# Training mode
# Use cached objects
ops, (, nw_spixels, nh_spixels) = self.get_ops_and_layout(x, ofa=True)
else:
# Evaluation mode
# Every time update the objects
ops, (, nw_spixels, nh_spixels) = self.get_ops_and_layout(x, ofa=False)
x = self.feat_cvrter(x, nw_spixels, nh_spixels)
escnet配置中这三个参数是eta_pos: 2.0 gamma_clr: 0.1offsets: - 0.0 - 0.0- 0.0 - 0.0- 0.0
(3)重构损失和紧凑性损失的输入(重构自己理解为计算出Q关联矩阵后,对标签R转换,计算转换前后的损失;紧凑型理解为,像素级特征cvrted_feats与聚类中心spixel_map的损失,不知道对不对)
for Q_, ops_, cvrted_feats_ in zip(Q, ops, cvrted_feats):
idx_map = self.get_abs_idx_map(Q_, ops_)
spixel_map = self.get_sp_map(Q_, cvrted_feats_, idx_map, ops_)
R_recon = self.get_R_recon(Q_, R, ops_)
loss_cmpct += self.critn_cmpct(spixel_map, cvrted_feats_)
loss_recon += self.calc_recon_loss(R_recon, R)
默认应该是训练完一个epoch会eval一次~
默认应该是训练完一个epoch会eval一次~ 已解决,在read.me中已找到“在训练过程中或训练完成后,您可以在
exp/DATASET_NAME/weights/目录下查看模型权重文件”
python train.py train --exp_config /mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml
如果没有修改代码的话,执行这条指令应该能够让各个package被import。导入提示飘红、但运行时不报错可能和IDE的linter设置有关。
列表切片直接把原来8通道变成5通道,不知道想的对不对,这样是不是丢了信息),以及ssn的重构损失和紧凑性损失的输入是什么
关于那两个输入是什么,这个我也忘了额,时间有点儿久了……和论文里应该是对齐的,具体可以参考下论文呢~
这个仓库的训练代码相当集成,自己之前的训练代码有点拉,我太菜了,debug不明白从train.py是如何通过配置-exp_config到escnet_trainer.py训练的,想自己打断点去escnet_trainer去一步一步debug,配置参数 --exp_config "/mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml" train后也进不去
不用妄自菲薄吧,大家都是从打基础开始一步一步来的。你有看不懂的代码可以贴在这里,我们可以交流一下
好的好的,谢谢您,时间确实久了,哈哈
(1)整个代码只有训练完才会保存权重吗? (2)这个FeatureConverter是什么作用,rgb转xylab吗? class FeatureConverter: def init(self, eta_pos, gamma_clr, offsets): super().init() self.eta_pos = eta_pos self.gamma_clr = gamma_clr self.offsets = torch.Tensor(offsets).view(1,len(offsets),1,1)
@torch.no_grad() def __call__(self, feats, nw_spixels, nh_spixels): # Do not require grad b, c, h, w = feats.size() scale_pos, scale_clr = get_scale_factors(self.eta_pos, self.gamma_clr, nw_spixels, nh_spixels, w, h) scales = torch.Tensor((scale_pos,)*2+(scale_clr,)*(c-2)) scales.resize_(1,c,1,1) return feats * scales.type_as(feats) + self.offsets.type_as(feats)上面这段代码在ssn中调用了 def forward(self, x): if self.training: # Training mode # Use cached objects ops, (, nw_spixels, nh_spixels) = self.get_ops_and_layout(x, ofa=True) else: # Evaluation mode # Every time update the objects ops, (, nw_spixels, nh_spixels) = self.get_ops_and_layout(x, ofa=False) x = self.feat_cvrter(x, nw_spixels, nh_spixels) escnet配置中这三个参数是eta_pos: 2.0 gamma_clr: 0.1offsets: - 0.0 - 0.0- 0.0 - 0.0- 0.0 (3)重构损失和紧凑性损失的输入(重构自己理解为计算出Q关联矩阵后,对标签R转换,计算转换前后的损失;紧凑型理解为,像素级特征cvrted_feats与聚类中心spixel_map的损失,不知道对不对) for Q_, ops_, cvrted_feats_ in zip(Q, ops, cvrted_feats): idx_map = self.get_abs_idx_map(Q_, ops_) spixel_map = self.get_sp_map(Q_, cvrted_feats_, idx_map, ops_) R_recon = self.get_R_recon(Q_, R, ops_) loss_cmpct += self.critn_cmpct(spixel_map, cvrted_feats_) loss_recon += self.calc_recon_loss(R_recon, R)
昨天可能看漏了,关于后面两点:
(2) FeatureConverter看起来应该是做特征缩放的;
(3) 这个理解是正确的。
python train.py train --exp_config /mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml
如果没有修改代码的话,执行这条指令应该能够让各个package被import。导入提示飘红、但运行时不报错可能和IDE的linter设置有关。
列表切片直接把原来8通道变成5通道,不知道想的对不对,这样是不是丢了信息),以及ssn的重构损失和紧凑性损失的输入是什么
关于那两个输入是什么,这个我也忘了额,时间有点儿久了……和论文里应该是对齐的,具体可以参考下论文呢~
这个仓库的训练代码相当集成,自己之前的训练代码有点拉,我太菜了,debug不明白从train.py是如何通过配置-exp_config到escnet_trainer.py训练的,想自己打断点去escnet_trainer去一步一步debug,配置参数 --exp_config "/mnt/comic/zxr/zmm/CDLab/configs/levircd/config_levircd_escnet.yaml" train后也进不去
不用妄自菲薄吧,大家都是从打基础开始一步一步来的。你有看不懂的代码可以贴在这里,我们可以交流一下
好的好的,谢谢您,时间确实久了,哈哈 (1)整个代码只有训练完才会保存权重吗? (2)这个FeatureConverter是什么作用,rgb转xylab吗? class FeatureConverter: def init(self, eta_pos, gamma_clr, offsets): super().init() self.eta_pos = eta_pos self.gamma_clr = gamma_clr self.offsets = torch.Tensor(offsets).view(1,len(offsets),1,1)
@torch.no_grad() def __call__(self, feats, nw_spixels, nh_spixels): # Do not require grad b, c, h, w = feats.size() scale_pos, scale_clr = get_scale_factors(self.eta_pos, self.gamma_clr, nw_spixels, nh_spixels, w, h) scales = torch.Tensor((scale_pos,)*2+(scale_clr,)*(c-2)) scales.resize_(1,c,1,1) return feats * scales.type_as(feats) + self.offsets.type_as(feats)上面这段代码在ssn中调用了 def forward(self, x): if self.training: # Training mode # Use cached objects ops, (, nw_spixels, nh_spixels) = self.get_ops_and_layout(x, ofa=True) else: # Evaluation mode # Every time update the objects ops, (, nw_spixels, nh_spixels) = self.get_ops_and_layout(x, ofa=False) x = self.feat_cvrter(x, nw_spixels, nh_spixels) escnet配置中这三个参数是eta_pos: 2.0 gamma_clr: 0.1offsets: - 0.0 - 0.0- 0.0 - 0.0- 0.0 (3)重构损失和紧凑性损失的输入(重构自己理解为计算出Q关联矩阵后,对标签R转换,计算转换前后的损失;紧凑型理解为,像素级特征cvrted_feats与聚类中心spixel_map的损失,不知道对不对) for Q_, ops_, cvrted_feats_ in zip(Q, ops, cvrted_feats): idx_map = self.get_abs_idx_map(Q_, ops_) spixel_map = self.get_sp_map(Q_, cvrted_feats_, idx_map, ops_) R_recon = self.get_R_recon(Q_, R, ops_) loss_cmpct += self.critn_cmpct(spixel_map, cvrted_feats_) loss_recon += self.calc_recon_loss(R_recon, R)
昨天可能看漏了,关于后面两点:
(2)
FeatureConverter看起来应该是做特征缩放的; (3) 这个理解是正确的。
好的,再次感谢!