首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python编码88位的钢琴音符- int太大,无法转换为C long。

问Python编码88位的钢琴音符- int太大,无法转换为C long。
EN

Data Science用户
提问于 2019-01-28 19:19:04
回答 1查看 482关注 0票数 1

钢琴键盘有88个键:

我想在88位数组中编码一个音符或一个和弦。我这样做,例如:A4是0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000

接下来,我将这个数字转换为十进制。当我有和弦的时候,最后的数字真的很大。问题是,当我从NumPy将这么大的数字放入数组时,我得到:

代码语言:javascript
复制
note_data = np.array(note_data, dtype=np.int64)
OverflowError: Python int too large to convert to C long

我的观点是将这种数据反馈给递归神经网络,或者将音乐音符上更好的表示成数字?

编辑:

另一个编码C3注释的例子:

C3 = np.array([0000000000000000000000000001000000000000000000000000000000000000000000000000000000000000], dtype=int)

与错误相同:

代码语言:javascript
复制
OverflowError: Python int too large to convert to C long

减少这个错误是可能的吗?

EN

回答 1

Data Science用户

发布于 2019-01-29 13:46:28

这似乎是对信息进行编码的坏方法。C和弦和C7和弦是非常不同的数字,尽管它们在概念上是相似的。

我会接受你的想法,但不是把信息分解成一个int,而是用你描述的方式创建一个长度为88的二进制向量。这样,C和C7就会有类似的输入,只在向量的一个位置上有所不同。

作为一个简化的单倍频程例子,从C到B:

代码语言:javascript
复制
C : [1,0,0,0,1,0,0,1,0,0,0,0]
C7: [1,0,0,0,1,0,0,1,0,0,1,0]

这种编码使用的是“虚拟变量”。这就像在自然语言处理中经常使用的“单词袋”编码。

票数 3
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/44730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档