【已解决】IndexError: boolean index did not match indexed array along dimension 0; dimension is 128 but

本文讲述了在处理SimCLR模型时遇到的IndexError,原因在于批量处理数据时,标签数量与批量大小不匹配。通过分析和调整代码,将数据放入batch中解决了问题,强调了调试在解决此类问题中的重要性。

问题描述 

Traceback (most recent call last):
File "/home/visionx/nickle/temp/SimCLR/linear_evaluation.py", line 233, in <module>
plt.scatter(t_sne_embeddings[node_labels == class_id, 0],
~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^
IndexError: boolean index did not match indexed array along dimension 0; dimension is 128 but corresponding boolean dimension is 49920

原因分析和解决

        这个原因到是很好分析:就是索引对不上,indexError嘛,那为什么索引对不上呢?

        我们看一下报错信息就知道了,这个错误是和node_labels密切相关的,这个看名字大概能猜出来是对某个内容的标签,其实就是所取数据,那既然是取数据,总有一定的数量对吧,按照cv习惯的处理方法,其实就是分batch进行操作,那结果是什么对不上了呢?我们就得分析整个过程是怎么样的。

        我们再进行模型加载,或者预训练模型加载的时候是把批量的特征存储进来的,批量是多少?128,那就和报错信息内容对应上了,那为什么还有一个49920呢?这个时候我们留个心眼除一下就知道了,正好的390,也就是说按照128每batch去取,取了390次正好可以训练一个轮次,在验证的时候是把一个轮次epoch而不是一个批次batch,那明白了这一点就好处理了。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值