【发布时间】:2020-09-25 18:05:55
【问题描述】:
我正在研究生成音乐的模型。我所有的训练数据都使用相同的调和模式,C 大调。我有一个 numpy 数组 keyspace,其形状 (n,) 表示我键盘上的按键总数(以半音阶)。该数组中带有 1 的槽是 C 大调中的键;有 0 的槽位不在 C 大调。
模型以数组y_pred 的形式预测应该按下哪些键。我想在我的损失函数中添加一个术语,以惩罚模型按下不在 C 大调中的键。也就是说,我不想因为未能在键空间中按键而惩罚我的模型(因为并非每个节拍都使用音阶中的每个键!)。在 numpy 中,我可以这样做:
import numpy as np
keyspace = np.array( [0, 1, 0, 1, 0, 1] )
y_pred = np.array( [1, 0, 0, 1, 0, 1] )
loss_term = 0
for idx, i in enumerate(y_pred):
if i:
if not keyspace[idx]:
loss_term += 1
loss_term
我现在想将其转换为 Keras 后端函数,这意味着对其进行矢量化。有没有人看到这样做的好方法?任何指针都会非常有帮助!
【问题讨论】:
标签: python arrays numpy tensorflow keras