ValueError: (205087,), но получил (1,), используя fit_generator на единичных векторах в кератах - PullRequest
0 голосов
/ 21 февраля 2019

Хорошо, поэтому я экспериментирую с keras как часть проекта, и я получаю следующую ошибку, которую просто не могу исправить: ValueError: Error when checking input: expected input_1 to have shape (205087,) but got array with shape (1,) Мой код следующий:

import tensorflow as tf
import numpy as np
from tensorflow.keras.layers import Input, Dense, Concatenate
from tensorflow.keras.models import Model

def iterdata():
    while(True):
        for d in data: #data is already defined in my script
            val=tf.keras.utils.to_categorical(d, num_classes=vocab_size) #this is the one_hot vector that causes troubles
            yield val, 0
word = Input(shape=(vocab_size,))
encode = Dense(1, activation=None)
encoded = shared_encode(word)

model = Model(inputs=word, outputs=encoded)
model.compile(loss='mean_squared_error',
              optimizer='rmsprop',
              metrics=['accuracy'])
H = model.fit_generator(iterdata(), 
        epochs=10,
        steps_per_epoch=10) #according to the Traceback, error happens while running this line

Запуск:

for d in iterdata():
    print(d[0].shape)

правильно печатает (205087,) Так что я не знаю, что с ним делать, я попытался вместо этого выдать np.asarray([val]), но все равно получил ту же ошибку.Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 21 февраля 2019

Я нашел исправление.В случае, если это произойдет с вами, вы должны знать, что keras принимает входные данные в виде пакетов, поэтому ваш массив должен быть на один шаг глубже.В моем случае изменение его формы на (1,205807) устранило проблему, поскольку она не имеет никакого отношения к тому факту, что он был сгенерирован, ни по какой-либо другой причине, формат был просто не таким, как ожидалось.

Например, если ваша модельпринимает данные, такие как: [1,2,3] вам нужно кормить их [[1,2,3]]

...