使用Keras

时间:2016-10-25 09:15:24

标签: python matlab keras

我想使用Keras在Python上运行神经网络示例程序。我的数据是Matlab .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)

如何使用Keras加载上面的.mat数据来替换Python中的MNIST数据集?

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

编辑(仅供参考)

假设我的.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)

2 个答案:

答案 0 :(得分:1)

正如@Krishna所说,您可以使用scipy.io.loadmat将matlab文件作为numpy数组加载。然后,您必须重新整形数据,例如,train_data需要塑造为(10000, 32, 32)

但是,如果你的matlab文件在v7中,scipy.io.loadmat可能会给你一个错误。在这种情况下,mat文件实际上是hdf5格式。您需要使用h5py来加载数据。

答案 1 :(得分:0)

您可以使用scipy.io.loadmat阅读matfiles。有关详细信息,请阅读相关文档。