Затем я вставил свой код для создания CNN в Colab и начал процесс.
Вот полный код:
Часть 1. Настройка Colab для импорта изображений с моего Диска
( часть 1 скопирована отсюда, так как она работала так, как ожидалось я
Шаг 1:
Код: Выделить всё
!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse
Код: Выделить всё
from google.colab import auth
auth.authenticate_user()
Код: Выделить всё
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()
import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}
Код: Выделить всё
!mkdir -p drive
!google-drive-ocamlfuse drive
Код: Выделить всё
print('Files in Drive:')
!ls drive/
Я создал этот CNN с помощью учебных пособий из курса Udemy. В качестве серверной части он использует keras с тензорным потоком.
Для простоты я загрузил очень простую версию, которой достаточно, чтобы показать мои проблемы
Код: Выделить всё
from keras.models import Sequential
from keras.layers import Conv2D
from keras.layers import MaxPooling2D
from keras.layers import Flatten
from keras.layers import Dense
from keras.layers import Dropout
from keras.optimizers import Adam
from keras.preprocessing.image import ImageDataGenerator
Код: Выделить всё
imageSize=32
batchSize=64
epochAmount=50
Код: Выделить всё
classifier=Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape = (imageSize, imageSize, 3), activation = 'relu')) #convolutional layer
classifier.add(MaxPooling2D(pool_size = (2, 2))) #pooling layer
classifier.add(Flatten())
Код: Выделить всё
classifier.add(Dense(units=64, activation='relu')) #hidden layer
classifier.add(Dense(units=1, activation='sigmoid')) #output layer
classifier.compile(optimizer = "adam", loss = 'binary_crossentropy', metrics = ['accuracy']) #training method
Код: Выделить всё
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.2,
zoom_range = 0.2,
horizontal_flip = True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('drive/School/sem-2-2018/BSP2/UdemyCourse/CNN/dataset/training_set',
target_size = (imageSize, imageSize),
batch_size = batchSize,
class_mode = 'binary')
test_set = test_datagen.flow_from_directory('drive/School/sem-2-2018/BSP2/UdemyCourse/CNN/dataset/test_set',
target_size = (imageSize, imageSize),
batch_size = batchSize,
class_mode = 'binary')
classifier.fit_generator(training_set,
steps_per_epoch = (8000//batchSize),
epochs = epochAmount,
validation_data = test_set,
validation_steps = (2000//batchSize))
Во-первых, обучающий набор, который я использовал, представляет собой базу данных с 10 000 собак и кошек. фотографии различного разрешения. (8000 Training_set, 2000 Test_Set)
Я запускал этот CNN в Google Colab (с включенной поддержкой графического процессора) и на своем ПК (tensorflow-gpu на GTX 1060)
Это промежуточный результат с моего ПК:
Код: Выделить всё
Epoch 2/50
63/125 [==============>...............] - ETA: 2s - loss: 0.6382 - acc: 0.6520
Код: Выделить всё
Epoch 1/50
13/125 [==>...........................] - ETA: 1:00:51 - loss: 0.7265 - acc: 0.4916
Лично я подозреваю, что узкое место состоит в извлечении и последующем чтении изображений с моего Диска, но я не знаю, как решить эту проблему, кроме как выбрать другой метод импорта. база данных.
Подробнее здесь: https://stackoverflow.com/questions/493 ... d-to-my-pc
Мобильная версия