Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Batch size #3

Closed
Flynoodle opened this issue Jan 14, 2022 · 4 comments
Closed

Batch size #3

Flynoodle opened this issue Jan 14, 2022 · 4 comments

Comments

@Flynoodle
Copy link

感谢分享代码
想请教一下我在尝试调整batch size的时候遇到如下异常,请问您有没有解决方法可以分享?
另外一个问题是调节哪些参数可以有效提升预测的精确度呢?

异常如下, batch_size = 5:
*epoch1:loss_fake:0.13505132
Traceback (most recent call last):
File "train.py", line 133, in
train(myconfig)
File "train.py", line 119, in train
img_out=utility.GetQuadrupletsImg(inputdata, fake_img, s2img, s2CSMimg)
File "/content/drive/My Drive/Colab Notebooks/DSEN2_CR_PYTORCH_fall_200epoch/utils/utils.py", line 175, in GetQuadrupletsImg
img_cld= uint16to8((t.squeeze(img_cld ).cpu().numpy()scale).astype("uint16")).transpose(1,2,0)
ValueError: axes don't match array

@Phoenix-Shen
Copy link
Owner

好的,我晚上会检查一下,因为显存占用问题,之前都是用的batch_size=1,没有考虑到>1的情况,不好意思

@Flynoodle
Copy link
Author

非常感谢光速回复,期待你的分享

@Phoenix-Shen
Copy link
Owner

img_out=utility.GetQuadrupletsImg(inputdata, fake_img, s2img, s2CSMimg)

  1. 报错的这行操作的意义是将(原来有云图片、神经网络去云结果、原来的地面实景,云掩膜)这四个图片拼接在一起存到img_out中,然后发到visdom里面,可以实时看到结果。

  2. 当batch_size为1的时候,utils/utils.py里面175、 176 、178行的 t.squeeze操作就能将维度 [1,13,256,256]压缩成[13,256,256],当batch_size为5的时候,t.squeeze操作就没有用了,维度还是[5,13,256,256],所以就会出错,所以你需要保证: utility.GetQuadrupletsImg的四个参数,他们的第一个维度是1

  3. 解决方法:神经网络输出了5张图片,我们需要输出图片进行定性分析,只取一张输出到visdom里面就行了,所以可以改成
    img_out=utility.GetQuadrupletsImg(inputdata[0:1,:,:,:], fake_img[0:1,:,:,:], s2img[0:1,:,:,:], s2CSMimg[0:1,:,:,:]),我们就取第一张图片输出一下。

  4. 关于调参的问题:这篇论文里面的可以操作的东西比较少,只有config.py里面的 第25,26,31,32,35行这些影响训练效果的参数(其余的参数如save_frequency都是不影响效果的)是我自己拟定的,其余的论文中都给出来了,包括resnet的层数和resnet的feature_size。至于作者有没有对数据集进行一些预处理操作,我也记不清了,dataloader是那个数据集下载网站提供的,我在这个基础上修改了一下,应该没啥问题。

@Flynoodle
Copy link
Author

img_out=utility.GetQuadrupletsImg(inputdata, fake_img, s2img, s2CSMimg)

  1. 报错的这行操作的意义是将(原来有云图片、神经网络去云结果、原来的地面实景,云掩膜)这四个图片拼接在一起存到img_out中,然后发到visdom里面,可以实时看到结果。
  2. 当batch_size为1的时候,utils/utils.py里面175、 176 、178行的 t.squeeze操作就能将维度 [1,13,256,256]压缩成[13,256,256],当batch_size为5的时候,t.squeeze操作就没有用了,维度还是[5,13,256,256],所以就会出错,所以你需要保证: utility.GetQuadrupletsImg的四个参数,他们的第一个维度是1
  3. 解决方法:神经网络输出了5张图片,我们需要输出图片进行定性分析,只取一张输出到visdom里面就行了,所以可以改成
    img_out=utility.GetQuadrupletsImg(inputdata[0:1,:,:,:], fake_img[0:1,:,:,:], s2img[0:1,:,:,:], s2CSMimg[0:1,:,:,:]),我们就取第一张图片输出一下。
  4. 关于调参的问题:这篇论文里面的可以操作的东西比较少,只有config.py里面的 第25,26,31,32,35行这些影响训练效果的参数(其余的参数如save_frequency都是不影响效果的)是我自己拟定的,其余的论文中都给出来了,包括resnet的层数和resnet的feature_size。至于作者有没有对数据集进行一些预处理操作,我也记不清了,dataloader是那个数据集下载网站提供的,我在这个基础上修改了一下,应该没啥问题。

明白了,感谢详尽的解释,受益良多👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants