GoogleColab и первая нейронная сеть

  Рет қаралды 3,621

Академия Высоких Технологий

Академия Высоких Технологий

4 жыл бұрын

Напишем и обучим простую нейросеть для классификации изображений. Разберёмся как сохранять сеть на разных этапах обучения и прерывать обучение раньше назначенного срока. Бегло пробежимся по тому, что есть в keras.
Сервер в Discord, где можно задать вопросы, получить помощь с ошибками и не только:
/ discord
Тут можно скачать датасет с кошками и собаками, а ещё посоревноваться с другими людьми: sim.newgen.education/mcv/17
Прямые ссылки на кошек и собак на моём гугл диске:
drive.google.com/open?id=1iUd...
drive.google.com/open?id=1iTl...
Колабовский блокнотик с кодом: colab.research.google.com/dri...
Курс по нейронкам от Андрея Созыкина:
www.asozykin.ru/courses/nnpython
Урок от Адрина с PyImageSearch:
www.pyimagesearch.com/2018/09...

Пікірлер: 16
@34b44
@34b44 2 ай бұрын
Здравствуйте, Василий. А как потом брать датасет из файла data.pickle?
@acdches
@acdches 4 жыл бұрын
with open("/content/drive/My Drive/GoogleColab/Lesson_3/data.pickle", 'wb') as f: pickle.dump(data, f) print("Data seved") with open("/content/drive/My Drive/GoogleColab/Lesson_3/labels.pickle", 'wb') as f: pickle.dump(labels, f) print("Labels seved") Функция dump только сохраняет датасет в файл (Lesson_3/data.pickle)? Но как можно создать этот файл(с расширением pickle)? Спасибо!
@avt.global
@avt.global 4 жыл бұрын
pythonicway.com/python-fileio Функция open, с режимом доступа к файлу "wb", создает файл, если такового не существует.
@user-qn3qi7tb9t
@user-qn3qi7tb9t 3 жыл бұрын
Блок тренировки модели выдаёт следующую ошибку: ValueError Traceback (most recent call last) in () 9 H = model.fit(trainX, trainY, validation_data=(testX, testY), 10 epochs=20, batch_size=128, ---> 11 callbacks=[checkpointer]) 12 13 print('Model trained') 9 frames /usr/local/lib/python3.7/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs) 975 except Exception as e: # pylint:disable=broad-except 976 if hasattr(e, "ag_error_metadata"): --> 977 raise e.ag_error_metadata.to_exception(e) 978 else: 979 raise ValueError: in user code: /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function * return step_function(self, iterator) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:795 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:1259 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica return fn(*args, **kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:788 run_step ** outputs = model.train_step(data) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training.py:756 train_step y, y_pred, sample_weight, regularization_losses=self.losses) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/compile_utils.py:203 __call__ loss_value = loss_obj(y_t, y_p, sample_weight=sw) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:152 __call__ losses = call_fn(y_true, y_pred) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:256 call ** return ag_fn(y_true, y_pred, **self._fn_kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper return target(*args, **kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/losses.py:1608 binary_crossentropy K.binary_crossentropy(y_true, y_pred, from_logits=from_logits), axis=-1) /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper return target(*args, **kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/backend.py:4979 binary_crossentropy return nn.sigmoid_cross_entropy_with_logits(labels=target, logits=output) /usr/local/lib/python3.7/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper return target(*args, **kwargs) /usr/local/lib/python3.7/dist-packages/tensorflow/python/ops/nn_impl.py:174 sigmoid_cross_entropy_with_logits (logits.get_shape(), labels.get_shape())) ValueError: logits and labels must have the same shape ((None, 2) vs (None, 1))
@inishashi9848
@inishashi9848 3 жыл бұрын
Такая же ошибка, как и у других Сети не нравятся поданные на вход данные. Уже пробовал , что предлагали снизу. Даже при подаче на вход тех же картинок, что при обучении, с тем же форматированием, итог один - не принимает ValueError: in user code: /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1478 predict_function * return step_function(self, iterator) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1468 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1259 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica return fn(*args, **kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1461 run_step ** outputs = model.predict_step(data) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1434 predict_step return self(x, training=False) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:998 __call__ input_spec.assert_input_compatibility(self.input_spec, inputs, self.name) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/input_spec.py:259 assert_input_compatibility ' but received input with shape ' + display_shape(x.shape)) ValueError: Input 0 of layer sequential_1 is incompatible with the layer: expected axis -1 of input shape to have value 3072 but received input with shape (32, 1)
@avt.global
@avt.global 3 жыл бұрын
Здравствуйте. Пожалуйста, задайте этот вопрос на нашем сервере в Discord: discord.gg/vanJZyNYbY В вашем случае, сеть ожидает на вход данные такой формы (число картинок, 3072) А вы подаёте (32, 1) Более детальные пояснения можно получить в дискорде.
@user-baki
@user-baki 3 жыл бұрын
Выводит ошибку ValueError вот на этом участке кода(ForVideo_Using): data = cv2.resize(image, (32, 32)).flatten() pred = model.predict([[data]]) print(pred) if pred[0][0] >= pred[0][1]:
@avt.global
@avt.global 3 жыл бұрын
Покажите, пожалуйста, полный текст ошибки.
@user-baki
@user-baki 3 жыл бұрын
​@@avt.global ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 3072 but received input with shape [32, 1] ValueError Traceback (most recent call last) in () 14 data = cv2.resize(image, (32, 32)).flatten() 15 ---> 16 pred = model.predict([[data]]) 17 print(pred) 18 if pred[0][0] >= pred[0][1]: ________________________________________ 10 frames ________________________________________ /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs) 971 except Exception as e: # pylint:disable=broad-except 972 if hasattr(e, "ag_error_metadata"): --> 973 raise e.ag_error_metadata.to_exception(e) 974 else: 975 raise ValueError: in user code: /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1462 predict_function * return step_function(self, iterator) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1452 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1211 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica return fn(*args, **kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1445 run_step ** outputs = model.predict_step(data) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:1418 predict_step return self(x, training=False) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:976 __call__ self.name) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/input_spec.py:216 assert_input_compatibility ' but received input with shape ' + str(shape)) ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 3072 but received input with shape [32, 1]
@avt.global
@avt.global 3 жыл бұрын
​@@user-baki В данном случае ваш код, помогает, но модель находится на вашем диске и загрузить её невозможно. Ошибка в несоответствии входа сети и данных на него подаваемых. У вас сеть ожидает массив формы [3072, ?], где 3072 число пикселей в сплющенной картинке, а ? - число картинок в батче. воспользуйтесь model.summary(), чтобы убедиться в этом. Программа сообщает, что получает на вход [32,1], скорее всего, вы просто забыли расплющить изображение. Попробуйте сделать следующим образом: data = cv2.resize(image, (32, 32)) .flatten() pred = model.predict([[data]]) или так data = cv2.resize(image, (32, 32)) data = data.reshape((3072,1)) pred = model.predict(data)
@ilnurildarovich
@ilnurildarovich 3 жыл бұрын
Здравствуйте Василий! Благодарю за большую работу, но у меня почему-то ошибка при проверке (( Я создал "ForVideo_Using" как было показано на видео и к сожалению после запуска я получаю вот такую ошибку: pastebin.com/xNBSPDEM
@avt.global
@avt.global 3 жыл бұрын
Здравствуйте. Сети не нравится то, что вы подаёте ей на вход. Попробуйте следующее: data = cv2.resize(image, (32, 32)) data = data.reshape((3072,1)) pred = model.predict(data)
@rrrqr8266
@rrrqr8266 Жыл бұрын
pred = model.predict(np.array([data]))
@lidanit0191
@lidanit0191 3 жыл бұрын
Почему? ValueError Traceback (most recent call last) in () 1 EPOCHS = 70 2 ----> 3 H = model.fit(trainX, trainY, validation_data=(testX, testY), epochs=EPOCHS, batch_size=128) 4 5 print("Model trained") 10 frames /usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs) 971 except Exception as e: # pylint:disable=broad-except 972 if hasattr(e, "ag_error_metadata"): --> 973 raise e.ag_error_metadata.to_exception(e) 974 else: 975 raise ValueError: in user code: /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:806 train_function * return step_function(self, iterator) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:796 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,)) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1211 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2585 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2945 _call_for_each_replica return fn(*args, **kwargs) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:789 run_step ** outputs = model.train_step(data) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:747 train_step y_pred = self(x, training=True) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/base_layer.py:976 __call__ self.name) /usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/input_spec.py:216 assert_input_compatibility ' but received input with shape ' + str(shape)) ValueError: Input 0 of layer sequential_5 is incompatible with the layer: expected axis -1 of input shape to have value 3072 but received input with shape [None, 2]
@avt.global
@avt.global 3 жыл бұрын
Здравствуйте! Не смогу ответить. Мало информации. Предлагаю задать этот вопрос на нашем сервере в Discord. discord.gg/vanJZyNYbY Там и код можно показать и ссылкой на блокнотик поделиться.
@dorset1988
@dorset1988 Жыл бұрын
Что делать, если ссылки на папку в изображениями не работают, где мне найти подобный подборки изображений, если не делать их в ручную??
Свёрточная нейронная сеть
57:30
Академия Высоких Технологий
Рет қаралды 2,1 М.
Зачем Google Colab учителю?
24:20
Академия Высоких Технологий
Рет қаралды 878
Must-have gadget for every toilet! 🤩 #gadget
00:27
GiGaZoom
Рет қаралды 11 МЛН
Самое простое объяснение нейросети
16:30
Программный Кот
Рет қаралды 111 М.
Твоя ПЕРВАЯ НЕЙРОСЕТЬ на Python с нуля! | За 10 минут :3
18:31
Хауди Хо™ - Просто о мире IT!
Рет қаралды 234 М.
Обучение нейронной сети на Python
21:34
Дмитрий Коробченко
Рет қаралды 58 М.
Must-have gadget for every toilet! 🤩 #gadget
00:27
GiGaZoom
Рет қаралды 11 МЛН