钢琴键盘有88个键:

我想在88位数组中编码一个音符或一个和弦。我这样做,例如:A4是0000000000000000000000000000000000000000000000000000000001000000000000000000000000000000
接下来,我将这个数字转换为十进制。当我有和弦的时候,最后的数字真的很大。问题是,当我从NumPy将这么大的数字放入数组时,我得到:
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)
与错误相同:
OverflowError: Python int too large to convert to C long减少这个错误是可能的吗?
发布于 2019-01-29 13:46:28
这似乎是对信息进行编码的坏方法。C和弦和C7和弦是非常不同的数字,尽管它们在概念上是相似的。
我会接受你的想法,但不是把信息分解成一个int,而是用你描述的方式创建一个长度为88的二进制向量。这样,C和C7就会有类似的输入,只在向量的一个位置上有所不同。
作为一个简化的单倍频程例子,从C到B:
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]这种编码使用的是“虚拟变量”。这就像在自然语言处理中经常使用的“单词袋”编码。
https://datascience.stackexchange.com/questions/44730
复制相似问题