Логиты и метки должны иметь одинаковую ошибку формы при классификации изображений рака кожи. ⇐ Python
Логиты и метки должны иметь одинаковую ошибку формы при классификации изображений рака кожи.
Я использую последний пакет tensorflow и набор данных изображений рака кожи isic. Я совершенно новичок в машинном обучении и нейронных сетях и пытался классифицировать изображения с помощью нейронных сетей тензорного потока и кераса.
Я использовал код из Kaggle и немного изменил его, чтобы он соответствовал моим потребностям в модели, однако код не запускается и выдает ошибку, которую я не понимаю и не могу ничего сделать, поскольку код vanialla только что запустился хорошо.
Как устранить эту ошибку?
это функция, которую я написал для создания нейронной сети. Код основан на проекте Kaggle, и я попытался создать функции, которые можно использовать для легкого предоставления желаемых параметров и гиперпараметров для легкого обучения моделей.
#функция для выбора оптимизаторов Защиту select_optimizer (оптимизатор, lr): оптимизаторы = { «Адам»: tf.keras.optimizers.Adam(learning_rate=lr), «sgd»: tf.keras.optimizers.SGD(learning_rate=lr), «лев»: tf.keras.optimizers.Lion(learning_rate = lr), «adafactor»: tf.keras.optimizers.Adafactor(learning_rate = lr)} вернуть оптимизаторы[оптимизатор] # финальная функция, которая компилирует модель прототипа и получает модель и историю def proto_model(n, Neuron_density, num_classes, acti_functions, Final_acti, lr, loss_func, оптимизировать, эпохи): model = Sequential([layers.experimental.preprocessing.Rescaling(1.0/255, input_shape = (img_height, img_width, 3))]) #начальные свойства слоя нейронов в первом элементе массивов model.add(Conv2D(neuron_density[0] , 3 , дополнение = "то же самое", активация = acti_functions[0])) model.add(MaxPool2D()) Цикл #for для создания внутреннего слоя дизайна для i в диапазоне (1, n): model.add(Conv2D(neuron_density, 3, дополнение = "то же", активация = acti_functions)) model.add(MaxPool2D()) #final выходной плотный слой нейронов, взятый из последнего слоя массивов model.add(Сгладить()) model.add(Dense(neuron_density[n-1] , активация = acti_functions[n-1])) model.add(Dense(units = num_classes, active = Final_acti)) оптимизатор_алго = select_optimizer(оптимизировать, lr) model.compile(оптимизатор = оптимизатор_алго, потеря = loss_func, метрики = ['точность']) история = model.fit(train_ds, validation_data = val_ds, эпохи = эпохи) возвратная модель, история Параметры, которые я указал: -
плотности = [32, 64, 128, 256, 512, 1024] acties = ["relu", "relu", "relu", "relu", "relu", "relu"] fin_acti = "софтмакс" п = 6 классов = 9 скорость обучения = 0,001 loss_func = "Двоичная кроссэнтропия" оптимизатор = "Адам" эпох = 10 модель, история = proto_model(n, плотности, классы, действия, fin_acti, скорость обучения, потеря_функ, оптимизатор, эпохи) Вышеупомянутые параметры были точными, которые были даже в исходном коде ванили, однако на этот раз я превратил их в массивы и передал в функцию, которую я создал из ванильного кода.
Ошибка, с которой я столкнулся: ValueError: логиты и метки должны иметь одинаковую форму при получении ((None, 9) vs (None, 1)).
также показывает :-
Эпоха 1/10 -------------------------------------------------- ------------------------- ValueError Traceback (самый последний вызов — последний) Ячейка In[25], строка 10 8 оптимизатор = "Адам" 9 эпох = 10 ---> 10 модель, история = proto_model(n, плотности, классы, действия, fin_acti, скорость обучения, потеря_функ, оптимизатор, эпохи) Ячейка In[24], строка 33, в proto_model(n, Neuron_density, num_classes, acti_functions, Final_acti, lr, loss_func, оптимизировать, эпохи) 29 оптимизатор_алго = select_optimizer(оптимизировать, lr) 30 model.compile(оптимизатор = оптимизатор_алго, потеря = потеря_функ, 31 показатель = ['точность']) ---> 33 история = model.fit(train_ds, validation_data = val_ds, epochs = epochs) 35 возвратная модель, история Файл ~\anaconda3\Lib\site-packages\keras\src\utils\traceback_utils.py:70 в filter_traceback..error_handler(*args, **kwargs) 67 filtered_tb = _process_traceback_frames(e.__traceback__) 68 # Чтобы получить полную трассировку стека, вызовите: 69 # `tf.debugging.disable_traceback_filtering()` ---> 70 поднять e.with_traceback(filtered_tb) с None 71 наконец: 72 дель filtered_tb Файл C:\Users\SUBHOJ~1\AppData\Local\Temp\__autograph_generated_fileoc8gwbam.py:15, в external_factory..inner_factory..tf__train_function(итератор) 13 попытка: 14 do_return = Истина ---> 15 retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(итератор)), None, fscope) 16 кроме: 17 do_return = Ложь ValueError: в коде пользователя:
Я использую последний пакет tensorflow и набор данных изображений рака кожи isic. Я совершенно новичок в машинном обучении и нейронных сетях и пытался классифицировать изображения с помощью нейронных сетей тензорного потока и кераса.
Я использовал код из Kaggle и немного изменил его, чтобы он соответствовал моим потребностям в модели, однако код не запускается и выдает ошибку, которую я не понимаю и не могу ничего сделать, поскольку код vanialla только что запустился хорошо.
Как устранить эту ошибку?
это функция, которую я написал для создания нейронной сети. Код основан на проекте Kaggle, и я попытался создать функции, которые можно использовать для легкого предоставления желаемых параметров и гиперпараметров для легкого обучения моделей.
#функция для выбора оптимизаторов Защиту select_optimizer (оптимизатор, lr): оптимизаторы = { «Адам»: tf.keras.optimizers.Adam(learning_rate=lr), «sgd»: tf.keras.optimizers.SGD(learning_rate=lr), «лев»: tf.keras.optimizers.Lion(learning_rate = lr), «adafactor»: tf.keras.optimizers.Adafactor(learning_rate = lr)} вернуть оптимизаторы[оптимизатор] # финальная функция, которая компилирует модель прототипа и получает модель и историю def proto_model(n, Neuron_density, num_classes, acti_functions, Final_acti, lr, loss_func, оптимизировать, эпохи): model = Sequential([layers.experimental.preprocessing.Rescaling(1.0/255, input_shape = (img_height, img_width, 3))]) #начальные свойства слоя нейронов в первом элементе массивов model.add(Conv2D(neuron_density[0] , 3 , дополнение = "то же самое", активация = acti_functions[0])) model.add(MaxPool2D()) Цикл #for для создания внутреннего слоя дизайна для i в диапазоне (1, n): model.add(Conv2D(neuron_density, 3, дополнение = "то же", активация = acti_functions)) model.add(MaxPool2D()) #final выходной плотный слой нейронов, взятый из последнего слоя массивов model.add(Сгладить()) model.add(Dense(neuron_density[n-1] , активация = acti_functions[n-1])) model.add(Dense(units = num_classes, active = Final_acti)) оптимизатор_алго = select_optimizer(оптимизировать, lr) model.compile(оптимизатор = оптимизатор_алго, потеря = loss_func, метрики = ['точность']) история = model.fit(train_ds, validation_data = val_ds, эпохи = эпохи) возвратная модель, история Параметры, которые я указал: -
плотности = [32, 64, 128, 256, 512, 1024] acties = ["relu", "relu", "relu", "relu", "relu", "relu"] fin_acti = "софтмакс" п = 6 классов = 9 скорость обучения = 0,001 loss_func = "Двоичная кроссэнтропия" оптимизатор = "Адам" эпох = 10 модель, история = proto_model(n, плотности, классы, действия, fin_acti, скорость обучения, потеря_функ, оптимизатор, эпохи) Вышеупомянутые параметры были точными, которые были даже в исходном коде ванили, однако на этот раз я превратил их в массивы и передал в функцию, которую я создал из ванильного кода.
Ошибка, с которой я столкнулся: ValueError: логиты и метки должны иметь одинаковую форму при получении ((None, 9) vs (None, 1)).
также показывает :-
Эпоха 1/10 -------------------------------------------------- ------------------------- ValueError Traceback (самый последний вызов — последний) Ячейка In[25], строка 10 8 оптимизатор = "Адам" 9 эпох = 10 ---> 10 модель, история = proto_model(n, плотности, классы, действия, fin_acti, скорость обучения, потеря_функ, оптимизатор, эпохи) Ячейка In[24], строка 33, в proto_model(n, Neuron_density, num_classes, acti_functions, Final_acti, lr, loss_func, оптимизировать, эпохи) 29 оптимизатор_алго = select_optimizer(оптимизировать, lr) 30 model.compile(оптимизатор = оптимизатор_алго, потеря = потеря_функ, 31 показатель = ['точность']) ---> 33 история = model.fit(train_ds, validation_data = val_ds, epochs = epochs) 35 возвратная модель, история Файл ~\anaconda3\Lib\site-packages\keras\src\utils\traceback_utils.py:70 в filter_traceback..error_handler(*args, **kwargs) 67 filtered_tb = _process_traceback_frames(e.__traceback__) 68 # Чтобы получить полную трассировку стека, вызовите: 69 # `tf.debugging.disable_traceback_filtering()` ---> 70 поднять e.with_traceback(filtered_tb) с None 71 наконец: 72 дель filtered_tb Файл C:\Users\SUBHOJ~1\AppData\Local\Temp\__autograph_generated_fileoc8gwbam.py:15, в external_factory..inner_factory..tf__train_function(итератор) 13 попытка: 14 do_return = Истина ---> 15 retval_ = ag__.converted_call(ag__.ld(step_function), (ag__.ld(self), ag__.ld(итератор)), None, fscope) 16 кроме: 17 do_return = Ложь ValueError: в коде пользователя:
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение