You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法获取权重的原始十进制数值,数值被自动近似处理?

无法获取权重的原始十进制数值,数值被自动近似处理?

看起来你遇到的问题是训练完感知机后,想查看完整的权重和偏置十进制数值,结果被自动转成科学计数法,用repr也没得到预期效果对吧?我来帮你梳理下问题根源和解决办法~

首先,你代码里的一个小疏漏

你最后两行写了repr((weights))和repr((bias)),但只是生成了对应字符串,没有用print()输出!这就是你看不到这个结果的直接原因,得改成print(repr(weights))才能显示出来。不过即使这样,numpy数组的默认打印规则还是可能用科学计数法,所以还要调整打印格式。

解决打印格式的几个办法

1. 用numpy的打印选项强制关闭科学计数法

numpy默认会对很小或很大的数用科学计数法,你可以通过np.set_printoptions()来修改这个规则,让它显示完整的十进制小数:

# 在打印权重/偏置之前设置
np.set_printoptions(suppress=True, precision=15, threshold=np.inf)
# suppress=True:关闭科学计数法,尽量用普通小数显示
# precision=15:设置显示的小数位数(根据你的需求调整,比如20位)
# threshold=np.inf:确保长数组完整打印,不会出现省略号

# 然后直接打印
print("完整权重:")
print(weights)
print("完整偏置:")
print(bias)

2. 用字符串格式化逐个打印权重

如果你想更精细地控制每个数值的显示格式,比如固定显示15位小数,可以用Python的字符串格式化:

print("逐个打印权重(15位小数):")
for idx, w in enumerate(weights):
    print(f"权重{idx+1}: {w:.15f}")

print(f"偏置(15位小数): {bias:.15f}")

这种方式完全不会用科学计数法,每个数值都会以你指定的小数位数显示。

3. 转成Python原生列表打印

把numpy数组转成Python的普通列表,也能避免numpy的科学计数法默认规则:

print("转成列表的权重:")
print(list(weights))

不过如果数组很长,列表的打印可能会自动换行,但数值格式是正常的十进制。

最后再确认下

你训练感知机的逻辑看起来没问题,只要调整好打印格式,就能看到你需要的完整小数位数值,方便你复制到PyScript里使用啦~

备注:内容来源于stack exchange,提问作者Jacob James Delso

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 11:28:02