pypi 0.1.4 업데이트
keras 의 메모리 누수를 어느정도 해결했으나 아직 완벽히 해결이 되지 않음
입력 데이터를 tensor 형태로 변환해주어 넣는 방식으로 전환
This commit is contained in:
jung-geun
2023-07-21 15:20:24 +09:00
parent 23176bafb2
commit 99b1de3f82
9 changed files with 96 additions and 68 deletions

View File

@@ -1,6 +1,7 @@
import gc
import numpy as np
import tensorflow as tf
from tensorflow import keras
@@ -37,7 +38,6 @@ class Particle:
del i_w_, s_, l_
del init_weights
gc.collect()
def __del__(self):
del self.model
@@ -46,7 +46,6 @@ class Particle:
del self.negative
del self.best_score
del self.best_weights
gc.collect()
def _encode(self, weights: list):
"""
@@ -109,7 +108,7 @@ class Particle:
(float): 점수
"""
self.model.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
score = self.model.evaluate(x, y, verbose=0)
score = self.model.evaluate(x, y, verbose=0, use_multiprocessing=True)
if renewal == "acc":
if score[1] > self.best_score:
self.best_score = score[1]
@@ -221,26 +220,6 @@ class Particle:
del encode_w, w_sh, w_len
del encode_v, v_sh, v_len
def f(self, x, y, weights):
"""
EBPSO의 목적함수(예상)
Args:
x (list): 입력 데이터
y (list): 출력 데이터
weights (list): 가중치
Returns:
float: 목적함수 값
"""
self.model.set_weights(weights)
score = self.model.evaluate(x, y, verbose=0)[1]
if score > 0:
return 1 / (1 + score)
else:
return 1 + np.abs(score)
def step(self, x, y, local_rate, global_rate, w, g_best, renewal: str = "acc"):
"""
파티클의 한 스텝을 진행합니다.