Sample_weight_mode =“ Temporal”不起作用,是否有解决方案/想法/见解?

时间:2019-10-03 14:55:24

标签: python tensorflow machine-learning audio keras

我是机器学习的新手,我正在尝试在keras中实现每个时间步分类器。目前,我有45个6秒音频片段的样本,我进行一些特征提取并将每个时间步对齐到一个二进制类(0或1)。我的形状如下:

X_train.shape = (45,259,768)

Y_train.shape = (45,259,1)

我的0数远高于我的1数,因此我使用sklearn和compute_sample_weights来获取每个时间步长和形状为以下每个样本的采样权重矩阵:

sample_weights.shape = (45,259)

这是我的模特:

epochs = 25
model = Sequential()

model.add(Bidirectional(LSTM(units=25,input_shape=(259,768),return_sequences=True)))
model.add(Bidirectional(LSTM(units=25,return_sequences=True)))
model.add(TimeDistributed(Dense(2, activation='sigmoid')))


model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',sample_weight_mode="temporal",
              metrics=['categorical_accuracy','binary_accuracy','mse','mae'])



model.fit(x=X_train,y=Y_train,epochs=epochs,batch_size=512,validation_split=0.3,sample_weight=sample_weights)

但是,我一直收到错误消息:

  

ValueError:找到了形状为(45,259)的sample_weight数组。为了   要使用按时间逐步分配的样本权重,您应指定   在compile()中为sample_weight_mode =“ temporal”。如果你只是想使用   按样本权重,请确保您的sample_weight数组为1D。

有人对此有解决办法吗?如您所见,我已经指定了sample_weight_mode ='temporal',并且我相信自己的形状是正确的,但不确定。

0 个答案:

没有答案