mirror of
https://github.com/jung-geun/PSO.git
synced 2025-12-20 04:50:45 +09:00
23-07-21
pypi 0.1.4 업데이트 keras 의 메모리 누수를 어느정도 해결했으나 아직 완벽히 해결이 되지 않음 입력 데이터를 tensor 형태로 변환해주어 넣는 방식으로 전환
This commit is contained in:
@@ -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"):
|
||||
"""
|
||||
파티클의 한 스텝을 진행합니다.
|
||||
|
||||
Reference in New Issue
Block a user