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 #20

Open
yubinyes opened this issue Sep 30, 2018 · 6 comments
Open

训练更改batch_size #20

yubinyes opened this issue Sep 30, 2018 · 6 comments

Comments

@yubinyes
Copy link

你好:我想按照你的思路重新微调一批图,按照live的代码来做,因为默认的batch_size=48,太大了,我更改./RankIQA/live/train_vgg.prototxt的batch_size为3,然后更改netloss_live.py和rank_layer_live.py的dis=1,batch=1,level=3,已经按照你的格式生成了./data/live_train.txt和./data/live_test.txt,我只用GB损失类型,两个级别GB1、GB2。然后运行 ./src/RankIQA/live/train_vgg.sh,总是在Iteration 0的时候出错“IndexError: tuple index out of range”。不知道你能否指教一下,如何修改这个batch_size才能正常训练。

@yubinyes yubinyes reopened this Sep 30, 2018
@xialeiliu
Copy link
Owner

你做的这些改变应该是对的,你调试下数据读入部分,感觉是那部分有问题。

@yubinyes
Copy link
Author

暂时发现了一个问题,在rank_layer_live.py的get_minibatch(self,minibatch_db)函数里,minibatch_db是两幅图像的地址,jobs是得到的两幅3x224x224图像数据的列表,应该是读图失败了,读出来的是一个None,可能是它导致的错误。因为这一步用的是self.workers.map(preprocess,minibatch_db),我看不到具体的处理过程,我想用其他的图像库读取,但是我不清楚你是读的整张图,然后resize成224x224x3,然后转成3x224x224的,还是读取整张图,随机截取224x224的范围,然后再转成3x224x244的。我不太清楚你是怎么得到jobs的,你能告诉我一下吗?

@yubinyes
Copy link
Author

你好,还有个问题想跟你确认下。我下载了waterloo数据集,按照你的matlab脚本生成了损失图像,4种类别,每种类别5个级别。然后按照你的代码generate_rank_txt_live.py运行,修改一下文件夹目录dir_rank。你的样例文本live_test.txt,live_train.txt都是pristine_images是0分,GN1是1分,GN2是2分......,但是按照你的代码generate_rank_txt_live.py生成的分数是相反的,pristine_images是5分,GN1是4分,GN2是3分......,想请教一下,哪种是正确的文本形式。我是在ubuntu16+python2.7.12环境下操作的。

@xialeiliu
Copy link
Owner

先读取整张图,随机截取224x224的范围,然后再转成3x224x244的。
程序生成的是正确的。

@ranjiewwen
Copy link

ranjiewwen commented Nov 4, 2018

暂时发现了一个问题,在rank_layer_live.py的get_minibatch(self,minibatch_db)函数里,minibatch_db是两幅图像的地址,jobs是得到的两幅3x224x224图像数据的列表,应该是读图失败了,读出来的是一个None,可能是它导致的错误。因为这一步用的是self.workers.map(preprocess,minibatch_db),我看不到具体的处理过程,我想用其他的图像库读取,但是我不清楚你是读的整张图,然后resize成224x224x3,然后转成3x224x224的,还是读取整张图,随机截取224x224的范围,然后再转成3x224x244的。我不太清楚你是怎么得到jobs的,你能告诉我一下吗?

  • 你好你的问题解决了吗?我训练的时候遇到相同的问题:
  File "/home/xxx/desktop/RankIQA/src/data_layer/rank_layer_live.py", line 97, in forward
    blobs = self.get_minibatch(minibatch_db)
  File "/home/xxx/desktop/RankIQA/src/data_layer/rank_layer_live.py", line 72, in get_minibatch
    jobs =self.workers.map(preprocess,minibatch_db)
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 251, in map
    return self.map_async(func, iterable, chunksize).get()
  File "/usr/lib/python2.7/multiprocessing/pool.py", line 567, in get
    raise self._value
IndexError: tuple index out of range
*** Error in `/home/xxx/caffe/build/tools/caffe': double free or corruption (out): 0x000000000160d810 ***

  • 问题解决了:就是因为路径的问题,读文件失败;
  • 然后直接用batch=48会out of memory,然后batch=32可以训练了

@kevingarnetttwo
Copy link

你好,还有个问题想跟你确认下。我下载了waterloo数据集,按照你的matlab脚本生成了损失图像,4种类别,每种类别5个级别。然后按照你的代码generate_rank_txt_live.py运行,修改一下文件夹目录dir_rank。你的样例文本live_test.txt,live_train.txt都是pristine_images是0分,GN1是1分,GN2是2分......,但是按照你的代码generate_rank_txt_live.py生成的分数是相反的,pristine_images是5分,GN1是4分,GN2是3分......,想请教一下,哪种是正确的文本形式。我是在ubuntu16+python2.7.12环境下操作的。

同问

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

4 participants