Julia - 浮点型

浮点数类型:

Float64 类型,双精度,64 位

Float32 类型,单精度,32 位

Float16 类型,半精度,16 位

julia> 5.0
5.0

julia> 5.
5.0

julia> 0.3
0.3

julia> .3
0.3

julia> -1.2
-1.2

julia> -2.
-2.0

julia> 1e33  # 科学记数法
1.0e33

julia> 2e-7  # 科学记数法
2.0e-7

这些结果都是 Float64 的值

十六进制浮点数的类型只能是 Float64

julia> 0x7p1
14.0

julia> typeof(ans)
Float64

julia> 0x.5p-2
0.078125

julia> typeof(ans)
Float64

使用 f 来进行 Float32 值的输入

julia> 1f33
1.0f33

julia> typeof(ans)
Float32

julia> 2f-7
2.0f-7

julia> typeof(ans)
Float32

 浮点数类型转换为 Float32

julia> Float32(0.2)
0.2f0

julia> typeof(ans)
Float32

julia> Float32(-1.2)
-1.2f0

julia> typeof(ans)
Float32

julia> Float32(1e33)
1.0f33

julia> typeof(ans)
Float32

有的版本的半精度浮点数 Float16 只用来存储,计算时会被转换为 Float32

julia> 2 * Float16(4.)
8.0f0

julia> typeof(ans)
Float32

新版本 Float16 计算时也是 Float16

julia> 2 * Float16(4.)
Float16(8.0)

julia> typeof(ans)
Float16

精度

eps 函数可以用来计算浮点相对精度,即计算 1.0 到下一个可表示的浮点数之间的距离

julia> eps(Float32)
1.1920929f-7

julia> eps(Float64)
2.220446049250313e-16

julia> eps()  # 相当于 eps(Float64)
2.220446049250313e-16

eps 函数的参数是浮点数,则计算这个值和下一个可表示的浮点数的绝对差

eps(x) 的结果与 x 同类型,且满足 x + eps(x) 是下一个比 x 稍大的、可表示的浮点数

julia> eps(1.2)
2.220446049250313e-16

julia> eps(2.)
4.440892098500626e-16

julia> eps(1e33)
1.4411518807585587e17

julia> eps(0.0)
5.0e-324

相邻的两个浮点数之间的距离并不是固定的,数值越小,间距越小;数值越大,间距越大

浮点数在 0 附近最稠密,随着数值越来越大,数值越来越稀疏,数值间的距离呈指数增长

如果 x 为 64 位浮点数,则 eps(x) 与 eps(Float64) 相同

julia> eps(Float64)
2.220446049250313e-16

julia> eps(1.3)
2.220446049250313e-16

nextfloat 函数和 prevfloat 函数用来获取下一个或上一个浮点数

julia> x = 1.01
1.01

julia> nextfloat(x)
1.0100000000000002

julia> prevfloat(x)
1.0099999999999998

特殊的浮点数

Inf16(Float16),Inf32(Float32),Inf(Float64) 为正无穷,比所有的有限的浮点数都大

-Inf16(Float16),-Inf32(Float32),-Inf(Float64) 为负无穷,比所有的有限的浮点数都小

NaN16(Float16),NaN32(Float32),NaN(Float64) 为不存在,不能和任意浮点数比较大小(包括本身)

julia> Inf + Inf
Inf

julia> Inf - Inf
NaN

julia> Inf * Inf
Inf

julia> Inf / Inf
NaN

julia> 0 / 0
NaN

julia> 0 * Inf
NaN

julia> 1 + Inf
Inf

julia> 1 - Inf
-Inf

julia> 1 / Inf
0.0

julia> 1 / 0
Inf

julia> -1 / 0
-Inf

浮点型的 typemin 和 typemax 函数

julia> typemin(Float16)
-Inf16

julia> typemax(Float16)
Inf16

julia> typemin(Float32)
-Inf32

julia> typemax(Float32)
Inf32

julia> typemin(Float64)
-Inf

julia> typemax(Float64)
Inf

 

转载于:https://www.cnblogs.com/sch01ar/p/9494578.html

内容概要:本文详细探讨了基于樽海鞘算法(SSA)优化的极限学习机(ELM)在回归预测任务中的应用,并与传统的BP神经网络、广义回归神经网络(GRNN)以及未优化的ELM进行了性能对比。首先介绍了ELM的基本原理,即通过随机生成输入层与隐藏层之间的连接权重及阈值,仅需计算输出权重即可快速完成训练。接着阐述了SSA的工作机制,利用樽海鞘群体觅食行为优化ELM的输入权重和隐藏层阈值,从而提高模型性能。随后分别给出了BP、GRNN、ELM和SSA-ELM的具体实现代码,并通过波士顿房价数据集和其他工业数据集验证了各模型的表现。结果显示,SSA-ELM在预测精度方面显著优于其他三种方法,尽管其训练时间较长,但在实际应用中仍具有明显优势。 适合人群:对机器学习尤其是回归预测感兴趣的科研人员和技术开发者,特别是那些希望深入了解ELM及其优化方法的人。 使用场景及目标:适用于需要高效、高精度回归预测的应用场景,如金融建模、工业数据分析等。主要目标是提供一种更为有效的回归预测解决方案,尤其是在处理大规模数据集时能够保持较高的预测精度。 其他说明:文中提供了详细的代码示例和性能对比图表,帮助读者更好地理解和复现实验结果。同时提醒使用者注意SSA参数的选择对模型性能的影响,建议进行参数敏感性分析以获得最佳效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值