Я пытаюсь изучить нейронную сеть, используя этот код в колаборатории.Код работает без каких-либо ошибок, но ОСНОВНАЯ ПРОБЛЕМА заключается в том, что это слишком медленно (но параметры не слишком велики).для Python 3).Я пробовал разные типы tenorflow-gpu (как в коде), и похоже, что программа видит gpu, но по какой-то причине не использует gpu (у меня нет другого объяснения).
Если вы знаете, как улучшить и, что важнее, ускорить его, я был бы очень признателен:)
#!pip install tf-nightly-gpu-2.0-preview
#!pip install tensorflow-gpu
#!pip install tensorflow-gpu==2.0.0-beta1
#!pip install keras
!pip install -q tensorflow-gpu==2.0.0-beta0
import tensorflow as tf
import os
import numpy as np
from google.colab import drive
drive.mount('/content/drive/')
try:
os.chdir("drive/My Drive/NN")
except FileNotFoundError:
pass
device_name = tf.test.gpu_device_name()
if device_name != '/device:GPU:0':
raise SystemError('GPU device not found')
print("Found GPU at: {}".format(device_name))
#import keras
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense
with tf.device('/gpu:0'):
classifier = Sequential()
classifier.add(Conv2D(32, (3, 3), input_shape=(64, 64, 3), activation='relu'))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
classifier.add(Conv2D(32, (3, 3), activation='relu'))
classifier.add(MaxPooling2D(pool_size=(2, 2)))
classifier.add(Flatten())
classifier.add(Dense(128, activation='relu'))
classifier.add(Dense(1, activation='sigmoid'))
classifier.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
from tensorflow.keras.preprocessing.image import ImageDataGenerator
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(
'dataset/training_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary'
)
test_set = test_datagen.flow_from_directory(
'dataset/test_set',
target_size=(64, 64),
batch_size=32,
class_mode='binary'
)
classifier.fit_generator(
training_set,
steps_per_epoch=8000,
epochs=25,
validation_data=test_set,
validation_steps=2000
)