Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从MATLAB深度学习模型转换为Keras代码_Python_Matlab_Tensorflow_Keras_Deep Learning - Fatal编程技术网

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

Python 如何从MATLAB深度学习模型转换为Keras代码,python,matlab,tensorflow,keras,deep-learning,Python,Matlab,Tensorflow,Keras,Deep Learning,我正在Python3.7上制作Keras的二进制声音分类模型。我已经在MATLAB上建立了声音分类模型,但是MATLAB上没有安装特定的层(例如GRU)。因此,我尝试从MATLAB深度学习模型转换为Keras深度学习模型 原始MATLAB代码如下所示: inputsize=[31,69] layers = [ ... sequenceInputLayer(inputsize(1)) bilstmLayer(200,'OutputMode','last') fullyCon

我正在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


Keras 2.2.4

我认为这是因为MATLAB代码使用Adam优化器进行训练,而您在:

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'])

检查这是否改善了答案。

此代码已运行。使用MATLAB时,精度几乎达到了相同的水平。Keras的精度是错误的。。。正确值为0.946。这个问题是由Python上的标签造成的。