Я расскажу вам, как я установил 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

Внимание! В этом блокноте нет уценок, так как я экспериментировал с разными вещами.