Как преобразовать в код Keras из MATLAB Модель глубокого обучения - PullRequest
0 голосов
/ 16 марта 2020

Я делаю бинарную модель классификации звука Keras на Python3 .7. Я сделал модель классификации звука на MATLAB, однако какой-то определенный слой не установлен на MATLAB (например, GRU). Поэтому я пытаюсь перейти на модель глубокого обучения Keras из модели глубокого обучения MATLAB.

Оригинальный код 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.

Код Keras, основанный на коде MATLAB, показан ниже:

# 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 на Anaconda

Keras 2.2.4

1 Ответ

0 голосов
/ 16 марта 2020

Я думаю, это потому, что код 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'])

и проверьте, улучшается ли это ответ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...