Ошибка при проверке ввода: ожидалось, что dens_1_input будет иметь форму (784,), но получил массив с формой (1,) - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть ndarray, который выглядит как

[[array([0.        , 0.       ...       0.        ])],
                          ...    
[array([0.        , 0.       ...       0.        ])]]

, где каждый вложенный массив представляет собой одномерный массив из 784 значений np.float64

, когда я пытаюсь запустить Keras с первымслой, который выглядит как '' 'Dense (32, input_shape = (784,))' '' training_utils вызывает ValueError, потому что он думает, что мой массив имеет форму (1,), когда он ожидает (784,)

если я подпишу массив, я получу array[0].shape == (784,)

что я здесь не так делаю?Я пытался транспонировать, используя функцию keras.np_utils.to_categorical () и т. Д.

Я уверен, что это что-то простое, но мне не хватает этого

class netModel(object):
    def __init__(self, model, TrainingData, Labels):
        self.TrainingData = TrainingData
        self.Labels = Labels
        self.model = model
        self.model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

    def train(self):
        self.model.fit(self.TrainingData, self.Labels)

y = mnConv.mnistConverter.convert("train-images.idx3-ubyte",
                                  "train-labels.idx1-ubyte", 60000)
md = Sequential([
    Dense(32, input_shape=(784,)),
    Activation('relu'),
    Dense(28),
    Activation('sigmoid'),
    Dense(10),
    Activation('softmax'),
    ])
mod = netModel(md,td,lbl)
mod.train()

иФункция mnistCoverter выглядит так:

class mnistConverter(object):
    def convert(imgf, labelf, n):
        f = open(imgf, "rb")
        l = open(labelf, "rb")

        f.read(16)
        l.read(8)
        images = []

        for i in range(n):
            label, image = [np.ndarray(10,),np.ndarray(784,)]#shhh, Ignore this
            lbl = ord(l.read(1))
            np1 = np.float64(1)
            np0 = np.float64(0)
            for i in range(10):
                if lbl == i:
                    label[i] = np1
                else:
                    label[i] = np0
            for j in range(28*28):
                image[j] = fit(ord(f.read(1)))
            images.append((lbl, image))
        f.close()
        l.close()
        return np.array(images)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...