LifeGameYT
@LifeGameYT
UE | Developer

Как исправить ошибку с ИИ на tensorflow?

У меня есть модель сгенерированная и обученная кодом:

import tensorflow as tf
from keras.layers import Dense, Flatten, Conv2D, MaxPooling2D
from keras.datasets import mnist

# Определяем параметры модели
batch_size = 32
epochs = 10
image_height = 28
image_width = 28
num_classes = 10

# Загружаем данные
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# Создаем модель
model = tf.keras.Sequential([
    Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=(image_height, image_width, 1)),
    MaxPooling2D(pool_size=(2, 2)),
    Flatten(),
    Dense(128, activation="relu"),
    Dense(num_classes, activation="softmax")
])

# Компилируем модель
model.compile(loss="sparse_categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

# Обучаем модель
model.fit(x_train, y_train, epochs=epochs, batch_size=batch_size)

# Оцениваем модель
model.evaluate(x_test, y_test)

# Сохраняем модель
model.save("models/my_model.h5")


И код для генерации текста:
import tensorflow as tf
from keras.models import load_model
from keras.preprocessing.text import Tokenizer

# Загружаем модель
model = load_model("models/my_model.h5")

# Ввод текста
text = input("Введите текст: ")

# Токенизация текста
tokenizer = Tokenizer()
tokenizer.fit_on_texts([text])
sequence = tokenizer.texts_to_sequences([text])[0]

# Дополнение последовательности
MAX_LENGTH = 50  # Замените на желаемую длину
sequence = tf.keras.preprocessing.sequence.pad_sequences([sequence], maxlen=MAX_LENGTH)

# Генерация текста
predictions = model.predict(sequence)

# Вывод результата
print(predictions)


Этот код для генерации текста выдаёт ошибку:
Traceback (most recent call last):
  File "C:\Users\USER\Desktop\LifSem TGAI\generate.py", line 21, in <module>
    predictions = model.predict(sequence)
                  ^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\USER\Desktop\LifSem TGAI\.venv\Lib\site-packages\keras\src\utils\traceback_utils.py", line 123, in error_handler
    raise e.with_traceback(filtered_tb) from None
  File "C:\Users\USER\Desktop\LifSem TGAI\.venv\Lib\site-packages\keras\src\models\functional.py", line 274, in _adjust_input_rank
    raise ValueError(
ValueError: Exception encountered when calling Sequential.call().

Invalid input shape for input Tensor("sequential_1/Cast:0", shape=(1, 50), dtype=float32). Expected shape (None, 28, 28, 1), but input has incompatible shape (1, 50)

Arguments received by Sequential.call():
  • inputs=tf.Tensor(shape=(1, 50), dtype=int32)
  • training=False
  • mask=None

Process finished with exit code 1


Кто знает как это исправить?
  • Вопрос задан
  • 210 просмотров
Пригласить эксперта
Ответы на вопрос 1
Vindicar
@Vindicar
RTFM!
Ты код-то сам писал вообще? Потому что какую-то абсолютно несвязную фигню творишь, как будто чатгпт что-то нагенерил.

При обучении у тебя на входе модели свёрточный слой Conv2D. Такой слой по определению принимает на вход изображение. Ты задаёшь размер этого изображения как 28х28, что напоминает о популярной базе картинок цифр для обучения простых сетей MNIST. А дальше идёт вроде как простой классификатор на 10 классов, что тоже соответствует MNIST. Как будто из примера код взят.

А при тестировании ты делаешь embedding текста и подаёшь на вход какие-то обрывки полученных токенов.
Всё равно что пытаться присобачить половину ручной мясорубки к дизельному компрессору, потому что "ну оно же и там и там крутится!" Это вообще не может заработать в принципе.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы