簡體   English   中英

如何從 MATLAB 深度學習模型轉換為 Keras 代碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM