Я расскажу вам, как я установил Tensorflow 2 и начал создавать свёрточную нейронную сеть.
Это будет простой шаг за шагом с необходимым кодом.
Я также использовал наборы данных tensorflow в этом
Шаг 1:
Если у вас установлена версия tensorflow 1, вы должны запустить в терминале:
pip uninstall tensorflow
Шаг 1а:
Кроме того, вы можете создать новую среду, а затем выполнить шаг ниже.
Шаг 2:
Запустите в терминале:
pip install tensorflow
Это установит Tensorflow 2. Если вы создали новую среду, то нет необходимости устанавливать keras, поскольку все, что вам нужно, устанавливается с помощью этой команды. Это один из плюсов Tensorflow 2, он больше интегрирован с keras, как мы увидим дальше.
Шаг 3:
Установите tensorfow-datasets. У него много наборов данных, которые вы можете использовать. Документацию и доступные наборы данных можно увидеть здесь:
https://www.tensorflow.org/datasets/catalog/overview
Запустите в терминале:
pip install tensorflow-datasets
Шаг 4:
Откройте новый блокнот Jupyter.
Шаг 5:
Выполнить в ячейке:
import tensorflow as tf import tensorflow_datasets as tfds
Шаг 6:
Загрузите набор данных, я использую cifar10 для этой демонстрации:
datasets = tfds.load(“cifar10”) train_dataset, test_dataset = datasets[“train”], datasets[“test”] assert isinstance(train_dataset, tf.data.Dataset) cifar10_builder = tfds.builder(‘cifar10’)
Шаг 7 (необязательно):
См. информацию о наборе данных:
info = cifar10_builder.info print(info)
Шаг 8:
Извлеките данные:
for batch in train_dataset.batch(50000): x_train = batch[‘image’] y_train = batch[‘label’].numpy().astype(‘uint8’) for batch in test_dataset.batch(10000): x_test = batch[‘image’] y_test = batch[‘label’].numpy().astype(‘uint8’)
Вам нужно установить тип uint8, чтобы метки были того же типа, что и изображения для модели.
Шаг 9:
Нормализуйте изображения:
x_test = x_test/255 x_train = x_train/255
Шаг 10:
Построить модель:
model = tf.keras.models.Sequential([ tf.keras.layers.Conv2D(32, (3, 3), activation=’relu’, padding=’same’, input_shape=(32, 32, 3)), tf.keras.layers.Conv2D(32, (3, 3), activation=’relu’), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(64, (3, 3), padding=’same’, activation=’relu’), tf.keras.layers.Conv2D(64, (3, 3), activation=’relu’), tf.keras.layers.MaxPooling2D((2, 2)), tf.keras.layers.Conv2D(128, (3, 3), padding=’same’, activation=’relu’), tf.keras.layers.Conv2D(128, (3, 3), activation=’relu’), tf.keras.layers.Flatten(), tf.keras.layers.Dense(512, activation=’relu’), tf.keras.layers.Dense(10, activation=’softmax’) ]) model.compile(optimizer=’adam’, loss=’sparse_categorical_crossentropy’, metrics=[‘accuracy’])
Шаг 11:
Проверьте сводку модели:
model.summary()
Шаг 12:
Подходит к модели:
model.fit(x_train, y_train, epochs=25)
Шаг 13:
Оцените модель на тестовых данных:
model.evaluate(x_test, y_test, verbose=0)
Шаг 14:
Вернитесь и поиграйте со своей моделью, чтобы попытаться получить лучшие результаты.
Развлекайся!
Вопросы и комментарии приветствуются.
Код частично основан на моей записной книжке, которую можно увидеть здесь:
https://github.com/lraichik/tensorflow2_test/blob/master/cifar10%20image%20classification.ipynb
Внимание! В этом блокноте нет уценок, так как я экспериментировал с разными вещами.