Форум программистов, компьютерный форум, киберфорум
Искусственный интеллект
Войти
Регистрация
Восстановить пароль
Другие темы раздела
Искусственный интеллект Реализация обучения с подкреплением Здравствуйте. Изучаю сейчас тему обучения с подкреплением на примере игры в крестики-нолики. Вроде бы сделал, но по моему криво работает, можете подсказать сделал ли я что то не правильно? ... https://www.cyberforum.ru/ ai/ thread2345448.html Искусственный интеллект Расчет взвешенной суммы
При расчете взвешенной суммы входных сигналов, результат получается больше 1. Входные данные нормализованы. sum = 0.; for(int i=0; i<n; i++) sum += data * weights; Полученная сумма...
Искусственный интеллект Искусственный интеллект как у Тони Старка Здравствуйте, уважаемые кодеры и программисты, я хотел бы развиваться в сторону разработки ИИ и при чем довольно глубоко, однако, это не мой профиль и я имею познания лишь в Java, не могли бы вы... https://www.cyberforum.ru/ ai/ thread2342432.html Искусственный интеллект Библиотеки C# для создания и обучения нейронной сети Доброго времени суток! Подскажите пожалуйста есть ли на C# нормальные библиотеки для написания и обучения нейронной сети для решения задачи регрессии? Если да, то скажите какие и где про них... https://www.cyberforum.ru/ ai/ thread2340622.html
Выбор модели нейронной сети Искусственный интеллект
Здравствуйте, коллеги! Кто-нибудь может оказать помощь, как определить структуру нейронной сети для black box на 32 входных дискретных сигнала и 24 выходных. Чтобы можно было обучить эту нейронную...
Искусственный интеллект Обученные нейронные сети для перевода естесственных языков Здравствуйте! Для научной работы в университете ищу примеры уже обученных сетей для машинного перевода. Конечно, очень хочется найти реализации для перевода с английского на русский, но вообще был бы... https://www.cyberforum.ru/ ai/ thread2330554.html
Искусственный интеллект Машинное обучение для выбора способа доставки грузов https://www.cyberforum.ru/ ai/ thread2330355.html
Добрый день уважаемые форумчани! Прошу помочь с решением одной задачки. Хочу автоматизировать процесс принятия решения при выборе способа доставки груза. Есть несколько способов доставки которые мы...
Искусственный интеллект Использование искуственного интеллекта в метрологии
Добрый день. Помогите подобрать тему для реферата по метрологии. Увлекаюсь нейронными сетями и машинным обучением и решил как-то связать между собой искусственный интеллект и метрологию. Подскажите...
Искусственный интеллект Метод ближайших соседей https://www.cyberforum.ru/ ai/ thread2327253.html
Здравствуйте. Помогите составить алгоритм для Метода ближайших соседей распознавания образов. То есть по пунктам 1. генерируем данные 2.делим выборку на обучающую и текстовую и т.д. Спасибо.
Искусственный интеллект Переход от метаязыка программирования к естественному языку Будучи студентом работал программистом на С++, мы целый год писали обеспечение для элеватора транспортирующего удобрения на корабли в порту, я помню даже встроил туда компилятор с возможностью... https://www.cyberforum.ru/ ai/ thread2327052.html
Искусственный интеллект Объединение блоков на газетной вырезке
Доброго времени суток, есть датасет с координатами текстовых блоков на газетных вырезках. Нужно объединить блоки в цельные статьи (на одной странице может быть более одной статьи). Имеет ли смысл...
Искусственный интеллект Какую топологию и способ обучения НС использовать для того что бы она научилась ходить? С помощью Unity3d сделал модельку с ConfigurableJoint'тами а когда сделал обыкновенную feedforward сеть с методом обучения backpropagation, то я усомнился в её уместности. https://www.cyberforum.ru/ ai/ thread2322118.html
2 / 1 / 1
Регистрация: 26.08.2018
Сообщений: 22
0

Чем качественно отличается метод модели train_on_batch от fit? - Искусственный интеллект - Ответ 13031101

05.11.2018, 05:36. Показов 1970. Ответов 4
Метки (Все метки)

Из keras, разумеется. Понадобилось создать свою функцию для обучения модели на большом наборе данных, который не помещается в ОЗУ целиком. При обучении модели методом train_on_batch, при отсутствии разделения данных на проверочные внутри функции, модель отказывалась обучаться и её аккуратность падала в 0 после второй эпохи, чего нельзя сказать о методе fit с одной эпохой и размером партии аналогичным глобальному. Но если разделять данные на валидационные внутри функции, то модель успешно обучается, хотя это никак не отражается на конфигурации работы метода train_on_batch. Сейчас полностью перешел на недо-fit, но хотелось бы понять, почему это происходило... Вот код этой функции:
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
import os
import time
import numpy as np
from keras.preprocessing import image
np.random.seed(100)
 
def fit_on_batches(model, x_data, y_data, epochs=1, batch_size=32, validation_split=0., data_split=1., mode=None, target_img_size=None, patience=None):
 
    if mode==None:
        mode='img' if target_img_size!=None else 'arr'
 
    if mode!='arr':
        x_data, y_data = [x_data + i for i in os.listdir(x_data)], [y_data + i for i in os.listdir(y_data)]
 
    def imgInPath(path):
        return image.img_to_array(image.load_img(path, target_size=target_img_size))
    def maskInPath(path):
        return image.img_to_array(image.load_img(path, target_size=target_img_size, color_mode = "grayscale"))
 
    maxDataSplit = int(len(x_data) * data_split)
    maxValSplit = int(maxDataSplit * validation_split)
    dataXArr = np.random.choice(len(x_data), maxDataSplit, replace=False)
    trainXArr = dataXArr[maxValSplit:]
    valXArr = dataXArr[:maxValSplit]
    xTrain = np.array([x_data[i] for i in trainXArr])
    yTrain = np.array([y_data[i] for i in trainXArr])
    xVal = np.array([x_data[i] for i in valXArr])
    yVal = np.array([y_data[i] for i in valXArr])
 
    if len(xVal)==0:
        print('Train on {} samples'.format(len(xTrain)))
    else:
        print('Train on {} samples, validate on {} samples'.format(len(xTrain), len(xVal)))
 
    maxCtrlAcc = 0
    patCombo = 0
    ctrlInfo = None
    for epoch in range(epochs):
        print('Epoch {}/{}'.format(epoch+1, epochs))
        start_epoch_time = time.clock()
        outInfo = []
        if len(xTrain) > 0:
            batch=0
            startX=0
            endX=0
            ETA=0
            metricsSum=[0 for i in range(len(model.metrics_names))]
            while endX < len(xTrain):
                start_train_time = time.clock()
                batch += 1
                startX = batch_size*(batch-1)
                if batch_size*batch > len(xTrain):
                    endX = len(xTrain)
                else:
                    endX = batch_size*batch
 
                if mode=='arr':
                    x_batch = np.array([i for i in xTrain[startX:endX]])
                    y_batch = np.array([i for i in yTrain[startX:endX]])
                if mode=='img':
                    x_batch = np.array([imgInPath(i) for i in xTrain[startX:endX]])
                    y_batch = np.array([imgInPath(i) for i in yTrain[startX:endX]])
                    x_batch = x_batch.astype('float32')
                    y_batch = y_batch.astype('float32')
                    x_batch /= 255
                    y_batch /= 255
                if mode=='mask':
                    x_batch = np.array([imgInPath(i) for i in xTrain[startX:endX]])
                    y_batch = np.array([maskInPath(i) for i in yTrain[startX:endX]])
                    x_batch = x_batch.astype('float32')
                    y_batch = y_batch.astype('float32')
                    x_batch /= 255
                    y_batch /= 255
 
                hystory = model.fit(x_batch, y_batch, epochs=1, batch_size=batch_size, verbose=0)
                metrics = [i[0] for i in list(hystory.history.values())]
                #metrics = model.train_on_batch(x_batch, y_batch)                    #ПРОБЛЕМА ТУТ(!!!)
                metricsSum = [metricsSum[i]+metrics[i] for i in range(len(metrics))]
 
                if len(xTrain) > 1:
                    delta_train_time = (time.clock()-start_train_time)/batch_size
                    iETA = delta_train_time*(len(xTrain)-endX)
                    ETA = int(iETA+(ETA-iETA)*0.1)
                    print('Training batches: {:.2f}% - ETA: {:<4}'.format(endX/len(xTrain)*100, str(ETA)+'s'), end='\r', sep='')
 
            avgMetrics = [i/batch for i in metricsSum]
            metricsInfo = list(zip(model.metrics_names, avgMetrics))
            for i in range(len(metricsInfo)):
                outInfo.append(' - {}: {:.4f}'.format(metricsInfo[i][0], metricsInfo[i][1]))
 
        if len(xVal) > 0:
            valBatch=0
            startValX=0
            endValX=0
            ETA=0
            evalSum=[0 for i in range(len(model.metrics_names))]
            while endValX < len(xVal):
                start_val_time = time.clock()
                valBatch += 1
                startValX = batch_size*(valBatch-1)
                if batch_size*valBatch > len(xVal):
                    endValX = len(xVal)
                else:
                    endValX = batch_size*valBatch
 
                if mode=='arr':
                    x_val_batch = np.array([i for i in xVal[startValX:endValX]])
                    y_val_batch = np.array([i for i in yVal[startValX:endValX]])
                if mode=='img':
                    x_val_batch = np.array([imgInPath(i) for i in xVal[startValX:endValX]])
                    y_val_batch = np.array([imgInPath(i) for i in yVal[startValX:endValX]])
                    x_val_batch = x_val_batch.astype('float32')
                    y_val_batch = y_val_batch.astype('float32')
                    x_val_batch /= 255
                    y_val_batch /= 255
                if mode=='mask':
                    x_val_batch = np.array([imgInPath(i) for i in xVal[startValX:endValX]])
                    y_val_batch = np.array([maskInPath(i) for i in yVal[startValX:endValX]])
                    x_val_batch = x_val_batch.astype('float32')
                    y_val_batch = y_val_batch.astype('float32')
                    x_val_batch /= 255
                    y_val_batch /= 255
 
                evaluate = model.evaluate(x_val_batch, y_val_batch, verbose=0)
                evalSum = [evalSum[i]+evaluate[i] for i in range(len(evaluate))]
 
                if len(xVal) > 1:
                    delta_val_time = (time.clock()-start_val_time)/batch_size
                    iETA = delta_val_time*(len(xVal)-endValX)
                    ETA = int(iETA+(ETA-iETA)*0.1)
                    print('Validation batches: {:.2f}% - ETA: {:<4}'.format(endValX/len(xVal)*100, str(ETA)+'s'), end='\r', sep='')
 
            avgEval = [i/valBatch for i in evalSum]
            evalInfo = list(zip(model.metrics_names, avgEval))
            for i in range(len(evaluate)):
                outInfo.append(' - {}: {:.4f}'.format('val_'+evalInfo[i][0], evalInfo[i][1]))
 
        outInfo.insert(0, ' - {:<4}'.format(str(int(time.clock()-start_epoch_time))+'s'))
        outInfo = ''.join(outInfo)
        print(outInfo)
 
        if len(xVal) == 0:
            ctrlInfo = metricsInfo
        else:
            ctrlInfo = evalInfo
 
        if patience==None:
            continue
        if patience>=0:
            if ctrlInfo[1][1] >= maxCtrlAcc:
                maxCtrlAcc = ctrlInfo[1][1]
                bestModelInfo = [model, epoch]
                if ctrlInfo[1][1] > maxCtrlAcc:
                    patCombo = 0
            if ctrlInfo[1][1] <= maxCtrlAcc:
                patCombo += 1
            
            if patCombo >= patience:
                print('Retraining, stop learning... Saved the best epoch -', bestModelInfo[1]+1)
                model = bestModelInfo[0]
                break
 
        if patience==-1:
            if ctrlInfo[1][1] >= maxCtrlAcc:
                maxCtrlAcc = ctrlInfo[1][1]
                bestModelInfo = [model, epoch]
            
            if (epoch==epochs-1):
                if bestModelInfo[1]!=epoch:
                    print('Saved the best epoch -', bestModelInfo[1]+1)
                model = bestModelInfo[0]


Вернуться к обсуждению:
Чем качественно отличается метод модели train_on_batch от fit? Искусственный интеллект
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.11.2018, 05:36
Готовые ответы и решения:

Чем Спиральная модель отличается от инкрементальной интерационной модели?
Не могу понять, чем отличаются эти две модели: спиральная и инкрементально интерационная? Заранее...

Чем отличается обучение модели Гроссберга-Карпентера от обучения многослойного перцептрона
Чем принципиально отличается обучение модели Гроссберга-Карпентера от обучения многослойного...

Чем отличается метод от свойства ?
/./

Чем отличается метод ZF2 от ZF1?
Есть незавершенный проект на ZF1, можно ли завершить его, зная при этом только ZF2

4
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.11.2018, 05:36

Чем отличается метод золотого сечения от дихотомии?
Собственно,весь вопрос в заголовке.) в инете нет точной аргументации, а курсовик защитить надо.)

Чем метод формы show отличается от метода showmodal?
Чем метод формы show отличается от метода showmodal?

Чем отличается метод передачи данных TcpClient() от Socket
Здравствуйте! Подскажите, пожалуйста! Очень интересно :)

Перезапись данных из одно fit файла в другой fit файл
Помогите пожалуйста составить программу, которая брала бы имеющийся файл in.fit и переписовала бы...

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.