Страницы: 1
RSS
Сохранение объекта в массиве
 
В программе я работаю с данными класса, и понадобилось сохранять эти данные в массиве на определенные моменты времени. Класс содержит коллекции и просто сохранить данные не достаточно, необходимо хранить сам объект (класс), для удобного доступа к данным объектной модели класса. Но у меня получается сохранить только ссылку на класс. Помогите добрым советом...
 
Скорее всего, сохранить промежуточные состояния объекта таким образом не получится.  
 
 
Пробовал и так - тоже не получается (увы, я не знаю, как через Set X=Y скопировать  объект, а не ссылку на него. В других языках программирования для этих целей есть отдельные операторы)  
 
Public Sub Bibliotechka()  
   Dim Biblioteca(1 To 3) As New Kniga    'это массив для хранения трех состояний класса  
   Dim i As Integer  
 
   Biblioteca(1).AddList    'добавляем в книгу лист  
   Biblioteca(1).Lists(1).Predlogenie = "Предложение"    'а в лист одно предложение  
   Biblioteca(1).Lists(1).Predlogenie = Biblioteca(1).Lists(1).Predlogenie & 1    'меняем предложение  
 
   Set Biblioteca(2) = Biblioteca(1)  
   Biblioteca(2).Lists(1).Predlogenie = Biblioteca(2).Lists(1).Predlogenie & 2    'еще раз меняем  
 
   Set Biblioteca(3) = Biblioteca(2)  
   Biblioteca(3).Lists(1).Predlogenie = Biblioteca(3).Lists(1).Predlogenie & 3    'и еще  
 
   For i = 1 To 3    'читаем и получаем собственно за что боролись  
       Debug.Print Biblioteca(i).Lists(1).Predlogenie    '  
   Next i  
End Sub  
 
 
Вам именно промежуточные значения нужны?  
Объясните, что вы пытаетесь сделать в реальной задаче, - глядишь, что-нибудь и придумаем вместе...
 
Про реальную задачу: Опять нейросети.  
Сейчас я оттачиваю механизм обучения сети для более быстрого и качественного обучения (с минимальной ошибкой).  
Нейросеть это объест содержащий коллекцию слоев, каждый слой содержит коллекцию нейронов, каждый нейрон содержит коллекцию входов, каждый вход имеет вес. Через сеть пропускаю данные и подстраиваю веса. Повторяется эта процедура от нескольких десятков до нескольких десятков тысяч раз, пока на выходе ошибка не минимизируется. Так вот ошибка эта не только уменьшается со временем, она может расти, потом уменьшаться, потом снова расти, одним словом скачет. Нельзя сказать точно, что за 5000 эпох ошибка будет минимальна. Она может быть минимальна на 100 эпохе, а потом увеличиваться. Так вот мне нужно сохранять где-то структуру сети с данными для каждой эпохи со значением ошибки для того, чтобы в конце обучения просто сохранить веса лучшей сети для дальнейшего использования.  
Конечно, можно сохранять сами веса в массиве, но проход по 20 входам нейронов в цикле для записи весов будет замедлять процесс обучения.  
Вроде все написал...
 
ratboy, я так понял у Вас сеть на классах построена, которые в свою очередь завязаны на коллекциях. Не понимая масштаба всей проблемы, могу только посоветовать создать массив коллекций или коллекцию коллекций. Например, так  
 
Dim x As New Collection  
 
x.Add New Collection  
x.Item(1).Add New Collection  
x.Item(1).Item(1).Add New Collection  
 
а дальше уже с этим работать (если сможете : )
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Придется думать некую функцию прокладку для выдирания данных и хранения
 
Создал свойство класса Kniga, которое возвращает КОПИЮ коллекции LST. Попробуйте:
 
а зачем эти танцы с бубном, не проще ли все на массивах организовать, мне кажется это будет правильней и удобней, в массив а можно добавить еще одно значение со значением ошибки  
 
Sub ratboy()  
Dim i&, j&  
ReDim a(1 To 5, 1 To 2)  
ReDim b(1 To 5)  
For i = 1 To UBound(a)  
   a(i, 1) = "Состояние: " & i  
   For j = 1 To 5  
     b(j) = i * j  
   Next  
   a(i, 2) = b  
Next  
 
For i = 1 To UBound(a)  
Debug.Print a(i, 1)  
 For j = 1 To UBound(a(i, 2))  
        Debug.Print vbTab; a(i, 2)(j)  
 Next  
Next  
End Sub
Спасибо
Страницы: 1
Читают тему
Наверх
Loading...