#python #python-3.x #tensorflow #keras #deep-learning
Вопрос:
В настоящее время я изучаю глубокое обучение около 2-3 дней и получил эту ошибку, когда я пытаюсь обучить свои данные
Ошибка значения: Запрашивается для извлечения элемента 0, но последовательность имеет длину 0
сотрудник Google сказал, что ошибка здесь
56 validation_steps=totalVal // batch_size, 57 verbose=1,
—> 58 обратных вызовов=[тензорная доска])
и у меня есть код здесь, как и ниже, чтобы создать модель, которая мне нужна
Код
import os
from imutils import paths
from keras.preprocessing.image import ImageDataGenerator
from keras import backend as K
from keras.callbacks import TensorBoard
from time import time
from keras.models import Sequential
from keras.layers import Conv2D, MaxPooling2D
from keras.layers import Activation, Dropout, Flatten, Dense
IM_WIDTH=224
IM_HEIGHT=224
EPOCH=2
batch_size=32
ORIG_INPUT_DATASET="/content/drive/MyDrive/DataFix/DataJadi"
BASE_PATH="/content/drive/MyDrive/DataFix/DataJadi/"
TRAIN_PATH = os.path.sep.join([BASE_PATH, "training"])
VAL_PATH = os.path.sep.join([BASE_PATH, "validation"])
TEST_PATH = os.path.sep.join([BASE_PATH, "testing"])
totalTrain = len(list(paths.list_images(TRAIN_PATH)))
totalVal = len(list(paths.list_images(VAL_PATH)))
def ClassicalModel(input_shape):
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=input_shape))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(2, activation='softmax'))
model.compile(optimizer='adam',
loss='categorical_crossentropy', metrics=['accuracy'])
return model
train_datagen = ImageDataGenerator(
rescale=1 / 255,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True
)
val_datagen = ImageDataGenerator(rescale=1 / 255)
train_generator = train_datagen.flow_from_directory(TRAIN_PATH,
target_size=(IM_WIDTH, IM_HEIGHT),
batch_size=batch_size,
class_mode='categorical')
validation_generator = val_datagen.flow_from_directory(
VAL_PATH,
target_size=(IM_WIDTH, IM_HEIGHT),
batch_size=batch_size,
class_mode='categorical'
)
tensorboard=TensorBoard(log_dir="logs/{}".format(time()))
model = ClassicalModel(input_shape=(batch_size, IM_WIDTH, IM_HEIGHT))
model.fit_generator(
train_generator,
steps_per_epoch=totalTrain // batch_size,
epochs=EPOCH,
validation_data=validation_generator,
validation_steps=totalVal // batch_size,
verbose=1,
callbacks=[tensorboard])
model.save_weights('GerakanUjian.h5')
model.save('GerakanUjian.h5')
до сих пор не найдено решение и как его исправить до сих пор 🙁
любой ответ был бы признателен
, большое вам спасибо, ребята
Комментарии:
1. Вы проверили, что данные найдены и загружены правильно?
2. да,это в base_path, где внутри basepath есть папка 3, которая является обучением, проверкой и тестированием, а внутри папки обучения и проверки есть 3 движения, которые я хочу обнаружить, и внутри папки движения есть файл, который уже помечен мной с помощью LabelImg и имеет расширение файла xml
3. Это не то, о чем я спрашиваю, ImageDataGenerator выдает сообщение типа «найдено X изображений в классах Y», сигнализирующее о том, что класс нашел ваши данные, что вы получаете в своих сообщениях журнала?
4. @Dr. Snoopy ах, я вижу, извините, я получил это ~~~ Найдено 0 изображений, принадлежащих к 3 классам. Найдено 0 изображений, принадлежащих к 3 классам. /usr/local/lib/python3.7/dist-пакеты/keras/движок/обучение.py:1915: Предупреждение пользователя:
Model.fit_generator
устарело и будет удалено в будущей версии. Пожалуйста , используйтеModel.fit
, который поддерживает генераторы. предупреждения.предупреждать(»Model.fit_generator
устарело и » ~~~5. Это не поиск ваших изображений, в каком они формате?