如何从MATLAB深度学习模型转换为Keras代码



我正在Python3.7上制作Keras的二进制声音分类模型。我一直在MATLAB上制作声音分类模型,但MATLAB上没有安装一些特定的层(例如GRU(。因此,我尝试从MATLAB深度学习模型转换为Keras深度学习模型。

原始MATLAB代码如下所示:

inputsize=[31,69]
layers = [ ...
sequenceInputLayer(inputsize(1))
bilstmLayer(200,'OutputMode','last')
fullyConnectedLayer(2)
softmaxLayer
classificationLayer
]
options = trainingOptions('adam', ...
'MaxEpochs',30, ...
'MiniBatchSize', 200, ...
'InitialLearnRate', 0.01, ...
'GradientThreshold', 1, ...
'ExecutionEnvironment',"auto",...
'plots','training-progress', ...
'Verbose',false);

该模型的精度为0.955。

基于MATLAB代码的Keras代码如下所示:

# traindatasize=(86400,31,69)
inputsize=(31,69)
batchsize=200
epochs=30
model = Sequential()
model.add(Bidirectional(LSTM(200, input_shape=inputsize)))
model.add(Dense(2, activation='softmax'))
model.compile(optimizer=RMSprop(), loss='binary_crossentropy', metrics=['accuracy'])
model.fit(traindata, trainlabel, batch_size=batchsize, epochs=epochs, verbose=1)

该模型得到的精度为0.444

我不明白有什么影响。训练数据使用来自STFT的相同数据,并在训练前使用标准差和平均值对这些模型进行归一化。请发表意见。

蟒蛇上的Python 3.7

Keras 2.2.4

我认为这是因为MATLAB代码使用Adam优化器进行训练,而您在中定义了RMSprop

model.compile(optimizer=RMSprop(),loss='binary_crossentropy',metrics=['accuracy'])

相反,请使用:

from keras import optimizers
adam = optimizers.Adam(learning_rate=0.001, beta_1=0.9, beta_2=0.999, amsgrad=False)
...
model.compile(optimizer=adam,loss='binary_crossentropy',metrics=['accuracy'])

检查这是否改善了答案。

最新更新