2016-10-25 84 views
1

我想使用Keras在Python上運行神經網絡示例程序。我的數據是以Matlab .mat文件的形式出現的。使用Keras在Python中加載.mat數據

train_data.mat (size: 32x32x10,000 single) 
train_label.mat (size: 1x10,000 single) 
test_data.mat (size: 32x32x2,000 single) 
test_label.mat (size: 1x2,000 single) 

如何加載上面的.mat數據以使用Keras替換Python中的MNIST數據集?

from keras.datasets import mnist 
(train_data, train_label), (test_data, test_label) = mnist.load_data() 

EDIT(用於說明目的)

讓我說在.MAT train_data有三個數據,大小爲2x2x3,

val(:,:,1) = 

    1  1 
    1  1 


val(:,:,2) = 

    2  2 
    2  2 


val(:,:,3) = 

    3  3 
    3  3 

它與scipy.io樣之後,下面開始.loadmat,大小(2L,2L,3L)

>>> A 
array([[[1, 2, 3], 
     [1, 2, 3]], 

     [[1, 2, 3], 
     [1, 2, 3]]], dtype=uint8) 

如何將其重塑爲(3L,2L,2L),這意味着(2L,2L)的三個數據?

回答

>>> import scipy.io 
>>> A = scipy.io.loadmat('train_data') 
>>> B = A.flatten(1) # flatten to vector 
>>> C = B.reshape(3,2,2) # reshape 

>>> C 
array([[[1, 1], 
     [1, 1]], 

     [[2, 2], 
     [2, 2]], 

     [[3, 3], 
     [3, 3]]], dtype=uint8) 

回答

0

您可以使用scipy.io.loadmat閱讀matfiles。詳情請閱讀相關文件。

+0

我讀過它,但我不知道如何重塑數據。請參閱我的編輯。 – askseekknock

1

由於@Krishna說,你可以使用scipy.io.loadmat加載matlab文件作爲numpy數組。然後,你就必須重塑數據,例如,train_data需要的形狀作爲(10000, 32, 32)

但是,如果你有MATLAB的文件在第7版,scipy.io.loadmat可以給你一個錯誤。在這種情況下,mat文件實際上是hdf5格式。您將需要使用h5py加載數據。

+0

scipy.io.loadmat沒有給出任何錯誤,所以它表示格式正常。但沒有設法重塑它。 – askseekknock

+0

很高興看到你已經解決了。 – pyan

相關問題