ValueError: (205087,), но получил (1,), используя fit_generator на единичных векторах в кератах

Хорошо, поэтому я экспериментирую с 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 ответ

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

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

Другие вопросы по тегам