首页 > 其他分享 >ValueError: 'a' cannot be empty unless no samples are taken

ValueError: 'a' cannot be empty unless no samples are taken

时间:2024-05-12 16:30:54浏览次数:29  
标签:unless users idx no labels num np cannot idxs

Here, I met the error message as follows:

def maldroid_noniid(dataset, train_labels, num_users):
    num_shards, num_imgs = 110, 120
    idx_shard = [i for i in range(num_shards)]
    dict_users = {i: np.array([]) for i in range(num_users)}
    idxs = np.arange(num_shards*num_imgs)
    labels = torch.Tensor(train_labels)

    # sort labels
    idxs_labels = np.vstack((idxs, labels))
    idxs_labels = idxs_labels[:, idxs_labels[1, :].argsort()]
    idxs = idxs_labels[0, :]

    # divide and assign
    for i in range(num_users):
        rand_set = set(np.random.choice(idx_shard, 2, replace=False))
        idx_shard = list(set(idx_shard) - rand_set)
        for rand in rand_set:
            dict_users[i] = np.concatenate(
                (dict_users[i], idxs[rand*num_imgs:(rand+1)*num_imgs]), axis=0)

    return dict_users

When I compile the above Python code,

File "mtrand.pyx", line 909, in numpy.random.mtrand.RandomState.choice from np.random.choice
ValueError: 'a' cannot be empty unless no samples are taken

This error message was output.

The above Python code is non-i.i.d. This is the code to configure the dataset of Does anyone know why this error message pops up and how to fix this problem?

The error in the code is caused since idx_shard is an empty list when the following code is run-

np.random.choice(idx_shard, 2, replace=False)

Since you use np.random.choice with size=2 and replace=False, the size of the input must be at least 2.

The error you get occurs when the size of the input is 0.

This can be solved in multiple ways in your case. Possible solutions-

  • Inside the for loop for i in range(num_users): - check if index_shared is empty, and if it is, break
  • Add an assert in the start of the function to make sure that num_users <= num_shards / 2

Any other solution which prevents chosing from idx_shard when it is empty (or has one item) will work :)

标签:unless,users,idx,no,labels,num,np,cannot,idxs
From: https://www.cnblogs.com/ltkekeli1229/p/18187909

相关文章

  • GNOME快捷键
    gnome不好用,官方解释是:和传统桌面有点区别。传统桌面鼠标用的多点,gnome则是键盘用的多点,仅此而已。故gnome快捷键要记牢。GNOME系统主要快捷键汇总:**行为/动作**|**快捷键**进入概览模式|Super|鼠标点击左上角的“活动”进入“显示应用程序”|Super+A访问应用程序菜单|......
  • KAN: Kolmogorov–Arnold Networks 学术论文全译
    KAN:Kolmogorov–ArnoldNetworks学术论文全译来源 https://zhuanlan.zhihu.com/p/696001648 KAN:Kolmogorov–ArnoldNetworks https://arxiv.org/pdf/2404.19756讨论Applicationaspects:WehavepresentedsomepreliminaryevidencesthatKANsaremoreeffective......
  • NFLS NOI模拟 真夏は誰のモノ
    涉及知识点:DP题面有一个长度为\(n\(\leq6000)\)字符串\(s\),可以执行如下操作:选定一个\(i\in[1,n]\),将\(i\)左侧或者右侧的连续若干个字符变成\(s[i]\)(选定的字符要连续且有一个与\(i\)相邻)。你可以执行任意次这样的操作,请问最后可以得到多少种本质不同的合法的字符串......
  • [NOI2009] 二叉查找树 & 笛卡尔树学习笔记
    这个题:二叉搜索树原理认识+区间dp;只要熟练相关算法就一定可以做出来。但我不行。。。我们学习一下笛卡尔树:什么垃圾东西,不学了。发现这个题是l蓝书上一道题jqb。二叉查找树又有一个性质:二叉查找树的中序遍历是其代表的序列从小到大排序的结果。而无论Treap如何旋转,其都......
  • 使用nodejs创建返回xml的web server
    //ImportNode.jscoremodulei.ehttpconsthttp=require('http');constfs=require('fs').promises;consthost='localhost';constport=8000;constrssFileName="/news.rss";//Createwebserverconstserve......
  • [code notes] check_agg_arguments
    TheSQLselectsum(sum(a))frommyt1groupbya;Thisnotefocusesonlyonsum(sum(a))andit'sabouthowpostgresrejectsthesqlabove.Notessum(sum(a))|||||\_innermostargument,Varnode|\_ functioncall\_functioncal......
  • mysql使用group by查询报错SELECT list is not in GROUP BY clause and contains nona
    官方解释:ONLY_FULL_GROUP_BY是MySQL数据库提供的一个sql_mode,通过这个sql_mode来保证,SQL语句“分组求最值”合法性的检查.这种模式采用了与Oracle、DB2等数据库的处理方式。即不允许selecttargetlist中出现语义不明确的列.对于用到GROUPBY的select语句,查出......
  • C# 使用QuestPDF各种报错,System.IO.FileNotFoundException:“未能加载文件或程序集,Dll
    最近要做一个生成pdf报告的小功能,搜索一番之后,选择了QuestPDF这个库由于我是要在netframework4.8中实现功能,可能使用场景太老了,导致使用过程一波三折,非常的坎坷,折腾了一下午,增长了一些经验,记录下来1,如果你要在netframework4.8框架中使用,就不要自作聪明的用netstandard2.0框架......
  • 如何设计与构建 FinOps 流程、团队、体系与目标
    作者:景祁前言近几年随着云计算的迅猛发展,企业IT数字化转型也已经进入“深水区”,对于用好云的关注度逐渐提升。《Flexera2023年云计算现状报告》显示,云成本管理优化跃居云管理团队下年度待办清单的榜首。FinOps(财务运营)作为一种新的操作模型逐渐进入云管理团队的视野。FinO......
  • 串口U盘 - 基于STM32+CH375的郁闷的工程师利器+Arduino Laser Infrared Thermometer -
    1、串口U盘-基于STM32+CH375的郁闷的工程师利器辛勤地打工的工程师们,你们是否曾经有过这样的经历,自己辛辛苦苦为公司写的代码和设计的PCB,却无论如何都不能据为己有?因为公司不允许个人电脑上网,因为公司的电脑居然把USB口也封闭了!这时候,我们是万般地郁闷,但是,作为一个以电子开发......