Sample\u weight\u mode=“Temporal”不起作用,有什么解决方案/想法/见解吗?

2024-06-16 11:40:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我是机器学习的新手,我正在尝试在keras中实现一个每时间步分类器。目前,我有45个6秒音频剪辑的样本,我做了一些特征提取和调整每一个二进制类(0或1)的时间步。我的形状如下:

X_train.shape = (45,259,768)

Y_train.shape = (45,259,1)

我的0的数目比我的1的数目大得多,因此我使用sklearn和compute\u sample\u 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: Found a sample_weight array with shape (45, 259). In order to use timestep-wise sample weights, you should specify sample_weight_mode="temporal" in compile(). If you just mean to use sample-wise weights, make sure your sample_weight array is 1D.

有人能解决这个问题吗??如你所见,我已经指定了sample\u weight\u mode='temporal',我相信我的形状是正确的,但我不确定。你知道吗


Tags: sampleaddmodelmode时间train形状样本