Форум программистов, компьютерный форум, киберфорум
Python: Научные вычисления
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,032

Ускорить обучение

11.03.2024, 13:12. Показов 642. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Изучаю и экспериментирую с состязательной нейронной сетью на простых примерах. На входе для обучение отправляются два изображения 128x128x3.

Есть скрипт
Кликните здесь для просмотра всего текста
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
from tensorflow.keras import layers
from tensorflow.keras import Input
from tensorflow.keras.models import Model
from tensorflow.keras import optimizers
import numpy as np
import os
import glob
import matplotlib.pyplot as plt
%matplotlib inline
 
latent_dim = 128
height = 128
width = 128
channels = 3
 
generator_input = Input(shape=(latent_dim,))
 
x = layers.Dense(512 * 64 * 64)(generator_input)
x = layers.LeakyReLU()(x)
x = layers.Reshape((64, 64, 512))(x)
x = layers.Conv2D(1024, 5, padding='same')(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2DTranspose(1024, 4, strides=2, padding='same')(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(1024, 5, padding='same')(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(1024, 5, padding='same')(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(channels, 7, activation='tanh', padding='same')(x)
generator = Model(generator_input, x)
 
discriminator_input = layers.Input(shape=(height, width, channels))
x = layers.Conv2D(512, 3)(discriminator_input)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(512, 4, strides=2)(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(512, 4, strides=2)(x)
x = layers.LeakyReLU()(x)
x = layers.Conv2D(512, 4, strides=2)(x)
x = layers.LeakyReLU()(x)
x = layers.Flatten()(x)
x = layers.Dropout(0.4)(x)
x = layers.Dense(1, activation='sigmoid')(x)
 
discriminator = Model(discriminator_input, x)
 
discriminator_optimizer = optimizers.legacy.RMSprop(learning_rate=0.0008, clipvalue=1.0, decay=1e-8)
discriminator.compile(optimizer=discriminator_optimizer, loss='binary_crossentropy')
 
discriminator.trainable = False
gan_input = Input(shape=(latent_dim,))
gan_output = discriminator(generator(gan_input))
gan = Model(gan_input, gan_output)
gan_optimizer = optimizers.legacy.RMSprop(learning_rate=0.0004, clipvalue=1.0, decay=1e-8)
gan.compile(optimizer=gan_optimizer, loss='binary_crossentropy')
 
DATA_PATH = r'C:\Users\Acer\Desktop\fragments'
extensions = [DATA_PATH + '/*.png']
listOfFiles = []
 
for i in extensions:
    for image_file_name in glob.glob(i):    
        listOfFiles.append(image_file_name)
 
x_train = np.zeros(shape = (len(listOfFiles), height, width, channels), dtype = 'float32')
 
for id, file in enumerate(listOfFiles):
    x_train[id] = plt.imread(file)[:,:,:3]
 
iterations = 10000
batch_size = 2
 
start = 0
for step in range(iterations):
    random_latent_vectors = np.random.normal(size=(batch_size, latent_dim))
    
    #Можно чуть чуть ускорить на этой строке
    generated_images = generator.predict(random_latent_vectors)
    
    stop = start + batch_size
    real_images = x_train[start: stop]    
    combined_images = np.concatenate([generated_images, real_images])    
    labels = np.concatenate([np.ones((batch_size, 1)), np.zeros((batch_size, 1))])    
    labels += 0.05 * np.random.random(labels.shape)    
    d_loss = discriminator.train_on_batch(combined_images, labels)    
    random_latent_vectors = np.random.normal(size=(batch_size, latent_dim))    
    misleading_targets = np.zeros((batch_size, 1))
    
    #На этой строке надо ускорить сильно, почти всю RAM (16 гига) использует
    a_loss = gan.train_on_batch(random_latent_vectors, misleading_targets)
    
    start += batch_size
    if start > len(x_train) - batch_size:
        start = 0

Запускаю Jupiter Notebook. Работает долго. Понятно, что для ускорения нужен мощный комп с соответствующей графической картой. Но исходя данного скрипта как можно ускорить расчеты путем записи команды по другому? Может для изображении, которые на входе 128x128X3 в отличие от 32x32x3, надо использовать более оптимальный алгоритм? Хотелось бы получить рекомендации экспертов по таким нейронным сетям в плане ускорения.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.03.2024, 13:12
Ответы с готовыми решениями:

Машинное обучение
Приветствую всех Делаю проект по биометрической верификации, только начал погружаться в машинное обучение, поэтому в интернете нахватался...

Машинное Обучение
Доброго времени суток уважаемые читатели, хочу услышать Ваше экспертное мнение в области машинного обучения. На данный момент есть много...

Обучение в sklearn
Всем доброго дня! Прошу знающих, ну или не очень знающих помочь) Задача спрогнозировать событие и время когда это событие произойдёт. ...

5
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,032
13.03.2024, 13:10  [ТС]
В общем, изображения после каждой итерации получаются черными. Правильно понимаю, тут надо играться learning rate? Или два изображения на входе это мало?
0
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
13.03.2024, 17:07
MConst, вы обучаете сеть на датасете всего из двух изображений? Серьезно?
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,032
13.03.2024, 17:23  [ТС]
Я пока хочу понять как это работает. Могу больше изображений отправить, только намного дольше будет работать.

Добавлено через 10 минут
Какое должно быть минимальное количество изображений на входе, если размеры 128x128x3?
0
5517 / 2870 / 571
Регистрация: 07.11.2019
Сообщений: 4,761
13.03.2024, 19:15
MConst, вопрос из серии сколько нужно выучить слов, что бы сказать что знаешь иностранный язык. Явно больше двух, так?
Хотите разобраться - скачайте примеры с датасетами. На сайте TF/keras'а вроде было...
0
2 / 2 / 1
Регистрация: 16.04.2022
Сообщений: 1,032
25.03.2024, 12:01  [ТС]
Хочу узнать для информации. Вообще, возможно ли генерировать изображение из двух реальных изображений? Хотелось бы поэкспериментировать на простых примерах, чтобы было понимание как это все работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.03.2024, 12:01
Помогаю со студенческими работами здесь

Машинное обучение
Здравствуйте. Прочитал на Хабре несколько статей по машинному обучению и решил немного попрактиковаться в этом деле. Есть набор...

Ускорить расчет
Здравствуйте! Есть цветное изображение с размером n * m. Есть заданные размеры фрагмента new_height и new_width. Нужно получить массив...

Keras. Машинное обучение
Приветствую, занимаюсь проектом по машинному обучению и задался вопросом... Какой алгоритм обучения нейронных сетей использован при...

K средних обучение с учителем
Доброго времени суток, не могу найти на просторах интернета код k-средних обучение с учителем, нахожу только код без учителя ,может у кого...

Обучение
Как и где лучше учить джанго?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru