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]]