[英]How to convert to Keras code from MATLAB Deep learning model
我正在 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
不明白是什么效果。 traindata 使用来自 STFT 的相同数据并在使用标准偏差和平均平均值训练这些模型之前进行归一化。 请一些意见。
蟒蛇上的 Python 3.7
凯拉斯 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'])
检查这是否可以改善答案。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.