c语言中计算熵的函数 c语言怎么算函数
用c语言求信源熵怎么编程
#include stdio.h
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、成都微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了郊区免费建站欢迎大家使用!
#include string.h
#includemath.h
int main()//是少了main函数,程序里面一定要有main函数的
{
double p[100];//每个信源的概率
int n;//信源个数
int i;
double sum=0;
scanf("%d",n);
for(i=0;in;i++)
{
scanf("%lf",p[i]);
sum+=-p[i]*(log(p[i])/log(2.0));
}
printf("%lf\n",sum);
return 0;
}
信息熵的计算公式,麻烦通俗地讲一下。
信息熵的计算公式:H(x) = E[I(xi)] = E[ log(2,1/P(xi)) ] = -∑P(xi)log(2,P(xi)) (i=1,2,..n)。
其中,x表示随机变量,与之相对应的是所有可能输出的集合,定义为符号集,随机变量的输出用x表示。P(x)表示输出概率函数。变量的不确定性越大,熵也就越大,把它搞清楚所需要的信息量也就越大。
信息熵是数学方法和语言文字学的结合,基本计算公式是未H = - LOG2(P)。其中,H 表示信息熵,P 表示某种语言文字的字符出现的概率,LOG2是以二为底的对数,用的是二进制,因而,信息熵的单位是比特(BIT,即二进制的0和1)。信息熵值就是信息熵的数值。
扩展资料:
信息熵的相关介绍:
一个信源发送出什么符号是不确定的,衡量它可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之不确定性就大。不确定性函数f是概率P的减函数;两个独立符号所产生的不确定性应等于各自不确定性之和。
人们常常说信息很多,或者信息较少,但却很难说清楚信息到底有多少。比如一本五十万字的中文书到底有多少信息量。
直到1948年,香农提出了“信息熵”的概念,才解决了对信息的量化度量问题。信息熵这个词是C.E.香农从热力学中借用过来的。热力学中的热熵是表示分子状态混乱程度的物理量。香农用信息熵的概念来描述信源的不确定度。信息论之父克劳德·艾尔伍德·香农第一次用数学语言阐明了概率与信息冗余度的关系。
参考资料来源:百度百科-信息熵
参考资料来源:百度百科-信息熵值
pytorch CrossEntropyLoss(), Softmax(), logSoftmax, NLLLoss
softmax(input, target)前面分析过其中的dim,就不多说,给出的结果是一个样本在C个类别上的概率分别是多少,概率之和为1.
logSoftmax(input, target)就是先softmax,然后将结果log一下,softmax的数值∈[0,1],log以后就是负无穷到0之间,这样做的好处解决softmax可能 带来的上溢出和下溢出问题,加快运算速度,提高数据稳定性 。
NLLLoss(input, target)是按照target数值(一个代表一行)将input中每行对应位置的数据取出来,去掉负号,求和,再取平均。
logSoftmax + NLLLoss就是计算交叉熵
CrossEntropyLoss(input, target) = logSoftmax +NLLLoss = log(Softmax) + NLLLoss
因此,在分类问题中,要使用CrossEntropyLoss函数计算交叉熵损失,在model中最后一层就不需要添加Softmax层了。
通过实际测试确定,CrossEntropyLoss中内置的LogSoftmax默认是按照行加和为1.
参考:
;depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase
在熵编码中,熵值的计算
计算步骤如下图:
在信息论中,熵是对不确定性的一种度量。信息量越大,不确定性就越小,熵也就越小;信息量越小,不确定性越大,熵也越大。根据熵的特性,我们可以通过计算熵值来判断一个事件的随机性及无序程度,也可以用熵值来判断某个指标的离散程度,指标的离散程度越大,该指标对综合评价的影响越大。
网页名称:c语言中计算熵的函数 c语言怎么算函数
本文URL:http://scyanting.com/article/ddciccj.html