Я использую библиотеку keras для реализации CNN и Anaconda 3 (spyder 4) для выполнения.
Я использовал команду conda install -c anaconda keras-gpu
Установлено cudatoolkit-10.0.130 , cudnn-7.6.5 и ensorflow-GPU-2.0.0 Но мой код не работает с ensorflow-GPU-2.0.0 , поэтому я понизил его до TenSenflow-GPU-1.15.0 . (Я также установил последний набор инструментов CUDA на мою машину, но я не знаю, какой из них использует spyder, из моей машины или среды conda) Хотя мой код работает нормально, но мой GPU использует только% 1. Я устанавливаю что-то не так, как неправильные комбинации Tensorflow и CUDA? На самом деле я пробовал большинство вещей, упомянутых в Интернете, но я никуда не денусь.
Информация о моей системе: Процессор: i7 GPU 9-го поколения: RTX 2060 Оперативная память: 16 ГБ ОС: Windows 10
Есть ли необходима установка или какие-либо изменения кода, чтобы заставить мой графический процессор работать? (Я выполнил одну из таких команд, как tf.config.list_physical_devices('GPU')
, чтобы проверить мой графический процессор, и он показывает положительный результат, поэтому тензор потока обнаруживает мой графический процессор, но я понятия не имею, почему он не использует его для выполнения)
ps: Я читал в Интернете, и большинство людей говорят о узких местах из-за процессора (даже если мой процессор используется низко, поэтому я буду признателен, если вы скажете мне что-то для его улучшения), и решение, которое они просят сделать, это загрузить ваши данные так что графический процессор может быть использован эффективно. Я использую набор данных изображений, поэтому вы можете сказать мне, как предварительно загрузить набор данных или реализовать параллелизм, чтобы его можно было подавать в графический процессор, а не передавать на лету. Я использую керасы, как упомянуто ниже, поэтому фрагмент кода, который будет удобен для новичка ie, как я, поможет получить кикстарт.
Код:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Convolution2D
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import Flatten
from tensorflow.keras.layers import Dense
from tensorflow.keras.preprocessing.image import ImageDataGenerator
classifier = Sequential()
classifier.add(Convolution2D(32, 3, 3, input_shape = (64, 64, 3), activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Convolution2D(32, 3, 3, activation = 'relu'))
classifier.add(MaxPooling2D(pool_size = (2, 2)))
classifier.add(Flatten())
classifier.add(Dense(units = 128, activation = 'relu'))
classifier.add(Dense(units = 1, activation = 'sigmoid'))
classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy'])
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)
.