Keras Gpu: Конфигурация - PullRequest
       2

Keras Gpu: Конфигурация

0 голосов
/ 19 февраля 2019

Я использую простые плотные слои, но загрузка процессора и процессора постоянно низкие.enter image description here enter image description here print (device_lib.list_local_devices ())

2019-02-19 19:06:23.911633: I tenorflow / core / platform / cpu_feature_guard.cc: 141] Ваш ЦП поддерживает инструкции, которые этот двоичный файл TensorFlow не был скомпилирован для использования: AVX AVX2

2019-02-19 19: 06: 24.231261: Itensorflow /core / common_runtime / gpu / gpu_device.cc: 1432] Найдено устройство 0 со свойствами: имя: GeForce RTX 2080, старшее: 7 минорных: 5 memoryClockRate (ГГц): 1,83 pciBusID: 0000: 65: 00.0 всего Память: 8,00 ГБ freeMemory: 6,55 ГБ2019-02-19 19: 06: 24.237952: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1511] Добавление видимых устройств gpu: 0 2019-02-19 19: 06: 25.765790: I tenorflow / core / common_runtime /gpu / gpu_device.cc: 982] Соединение устройств StreamExecutor с матрицей фронта прочности 1: 2019-02-19 19: 06: 25.769303: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 988] 0 2019-02-19 19: 06: 25.771334: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1001] 0: N 2019-02-19 19:06:25.776384: I tenorflow / core / common_runtime / gpu / gpu_device.cc: 1115] Создано устройство TensorFlow (/ устройство: GPU: 0 с 6288 МБ памяти) -> физический GPU (устройство: 0, имя: GeForce RTX 2080, идентификатор шины pci: 0000: 65: 00.0, вычислительные возможности: 7.5) [имя: "/ device: CPU: 0" device_type: "CPU" memory_limit: 268435456 locality {} incarnation: 5007262859900510599, name: "/ device: GPU: 0" device_type:«GPU» memory_limit: 6594058650 locality {bus_id: 1 воплощение {}}: 16804701769178738279 Physical_device_desc: «устройство: 0, имя: GeForce RTX 2080, идентификатор шины pci: 0000: 65: 00.0, вычислительная возможность: 7,5»

В аренде он работает на GPU.Но я не знаю, является ли это максимальным пределом для прохождения этой сети глубокого обучения в этом графическом процессоре.

EDIT2: набор данных

https://archive.ics.uci.edu/ml/datasets/combined+cycle+power+plant

Это около 10000 точек данных и 4 переменных описания.

EDIT3: код, это действительно просто.

num_p = 8
model = Sequential()
model.add(Dense(8*num_p, input_dim=input_features, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(16*num_p, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(16*num_p, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(16*num_p, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(16*num_p, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(8*num_p, input_dim=input_features, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(1, activation='linear'))
model.compile(loss='mae', optimizer='adam')

es = EarlyStopping(monitor='val_loss', min_delta=0.0005, patience=200, verbose=0, mode='min')
his = model.fit(x=X_train_scaled, y=y_train, batch_size=64, epochs=10000, verbose=0,
validation_split=0.2, callbacks=[es])

EDIT4: код входных данных

df = pd.read_csv("dataset")
X_train, X_test, y_train, y_test = 
train_test_split(df.iloc[:, :-1].values, df.iloc[:, -1].values)
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
batch_size = 64
dataset = tf.data.Dataset.from_tensor_slices((X_train_scaled, y_train))
print(dataset)
dataset = dataset.cache()
print(dataset)
dataset = dataset.shuffle(len(X_train_scaled))
print(dataset)
dataset = dataset.repeat()
print(dataset)
dataset = dataset.batch(batch_size)
print(dataset)
dataset = dataset.prefetch(batch_size*10)
print(dataset)

<TensorSliceDataset shapes: ((4,), ()), types: (tf.float64, tf.float64)> 
<CacheDataset shapes: ((4,), ()), types: (tf.float64, tf.float64)> 
<ShuffleDataset shapes: ((4,), ()), types: (tf.float64, tf.float64)> 
<RepeatDataset shapes: ((4,), ()), types: (tf.float64, tf.float64)> 
<BatchDataset shapes: ((?, 4), (?,)), types: (tf.float64, tf.float64)> 
<PrefetchDataset shapes: ((?, 4), (?,)), types: (tf.float64, tf.float64)>

Ответы [ 2 ]

0 голосов
/ 26 марта 2019

Вы смотрите на неправильный дисплей, чтобы увидеть использование графического процессора с tenorflow.То, что вы видите, - это 3D-активность видеокарты.

Если вы заметили, что есть стрелка раскрывающегося списка рядом с 3D, Кодирование видео и т. Д. Установите один из них на Cuda, а другой на Копировать.Это позволяет вам увидеть использование вычислительных ресурсов и время копирования.

У меня действительно есть проблема подобного типа, над которой я работаю, где я использую около 65% в Cuda, потому что набор данных очень мал.Вы можете увеличить размер пакета, чтобы увеличить использование графического процессора, но в результате вы также повредите сеть, так что действительно лучше тренироваться на наборах данных с размером пакета около 32-128 для большинства вещей, даже если ваша память GPU будет работать на гораздо большем количестве.

Ответ, приведенный выше для использования наборов данных, должен работать, если вы можете понять, как заставить его работать правильно.Это то, над чем я сейчас работаю.

0 голосов
/ 21 февраля 2019

Вы можете увеличить использование графического процессора, увеличив размер пакета.Однако, учитывая довольно небольшой размер набора данных, производительность можно улучшить с помощью API набора данных.Это гораздо более масштабируемое решение, способное обрабатывать большие наборы данных.

dataset = tf.data.Dataset.from_tensor_slices((X_train_scaled, y_train))
dataset = dataset.cache() #caches dataset in memory
dataset = dataset.shuffle(len(X_train_scaled)) #shuffles dataset
dataset = dataset.repeat() #with no parameter, repeats indefinitely
dataset = dataset.batch(batch_size)
dataset = dataset.prefetch(batch_size*10) #prefetches data 

Затем вы просто передаете объект набора данных в model.fit без batch_size, потому что он был указан ранее и с steps_per_epoch, чтобы сообщить модели размер эпохи.

his = model.fit(dataset, steps_per_epoch=7500, epochs=1000)

ps С CSV-файлом такого размера трудно получить высокий коэффициент использования.Вы можете легко передать весь набор данных за одну партию и получить около 60%.Больше информации здесь https://www.tensorflow.org/guide/performance/datasets

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...