From fa9af45a95257900fd7be5410b097676255ec42a Mon Sep 17 00:00:00 2001 From: jung-geun Date: Fri, 8 Mar 2024 19:35:44 +0900 Subject: [PATCH] =?UTF-8?q?pso2keras=20=EB=B2=84=EC=A0=84=EC=9D=84=201.0.5?= =?UTF-8?q?=EC=97=90=EC=84=9C=201.0.5.1=EB=A1=9C=20=EC=97=85=EB=8D=B0?= =?UTF-8?q?=EC=9D=B4=ED=8A=B8=ED=95=98=EA=B3=A0,=20TensorFlow=20GPU=20?= =?UTF-8?q?=EB=A9=94=EB=AA=A8=EB=A6=AC=20=EC=84=B1=EC=9E=A5=EC=9D=84=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=ED=95=98=EA=B3=A0,=20TF=5FCPP=5FMIN=5FLOG=5F?= =?UTF-8?q?LEVEL=EC=9D=84=202=EB=A1=9C=20=EC=84=A4=EC=A0=95=ED=96=88?= =?UTF-8?q?=EC=8A=B5=EB=8B=88=EB=8B=A4.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitlab/ci/build-pypi.gitlab-ci.yml | 3 ++- README.md | 6 +++++ pso/__init__.py | 13 ++++++++- pso/optimizer.py | 42 ++++++----------------------- setup.py | 2 +- 5 files changed, 29 insertions(+), 37 deletions(-) diff --git a/.gitlab/ci/build-pypi.gitlab-ci.yml b/.gitlab/ci/build-pypi.gitlab-ci.yml index ea4d9aa..e9609eb 100644 --- a/.gitlab/ci/build-pypi.gitlab-ci.yml +++ b/.gitlab/ci/build-pypi.gitlab-ci.yml @@ -1,6 +1,7 @@ variables: PYTHON_VERSION: "3.9" - TWINE_USERNAME: "__token__" + TWINE_USERNAME: $PYPI_USERNAME + TWINE_PASSWORD: $PYPI_PASSWORD build-pypi: stage: build-pypi diff --git a/README.md b/README.md index 335d429..67e1e30 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ [![Duplicated Lines (%)](https://sonar.pieroot.xyz/api/project_badges/measure?project=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a&metric=duplicated_lines_density&token=sqb_5fa45d924cd1c13f71a23a9283fba9460dc63eb6)](https://sonar.pieroot.xyz/dashboard?id=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a) [![Security Rating](https://sonar.pieroot.xyz/api/project_badges/measure?project=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a&metric=security_rating&token=sqb_5fa45d924cd1c13f71a23a9283fba9460dc63eb6)](https://sonar.pieroot.xyz/dashboard?id=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a) +# PSO + +keras model on particle swarm optimization + +현재 모델을 python 3.9 버전, tensorflow 2.11 버전에서 테스트 되었습니다 + ### 목차 > [PSO 알고리즘 구현 및 새로운 시도](#pso-알고리즘-구현-및-새로운-시도)
diff --git a/pso/__init__.py b/pso/__init__.py index 09b3b42..02bacb4 100644 --- a/pso/__init__.py +++ b/pso/__init__.py @@ -1,10 +1,21 @@ +import tensorflow as tf +import os from .optimizer import Optimizer as optimizer from .particle import Particle as particle -__version__ = "1.0.5" +__version__ = "1.0.5.1" print("pso2keras version : " + __version__) +gpus = tf.config.experimental.list_physical_devices("GPU") +if gpus: + try: + tf.config.experimental.set_memory_growth(gpus[0], True) + except RuntimeError as r: + print(r) + +os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" + __all__ = [ "optimizer", "particle", diff --git a/pso/optimizer.py b/pso/optimizer.py index 0f3d7c8..e2142fd 100644 --- a/pso/optimizer.py +++ b/pso/optimizer.py @@ -16,15 +16,6 @@ from tqdm.auto import tqdm from .particle import Particle -gpus = tf.config.experimental.list_physical_devices("GPU") -if gpus: - try: - tf.config.experimental.set_memory_growth(gpus[0], True) - except RuntimeError as r: - print(r) - -os.environ["TF_CPP_MIN_LOG_LEVEL"] = "2" - def find_free_port(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) @@ -123,7 +114,6 @@ class Optimizer: mutation_swarm # 관성을 추가로 사용할 파티클 비율 - 0 ~ 1 사이의 값 ) self.avg_score = 0 # 평균 점수 - # self.sigma = 1.0 self.renewal = "acc" self.dispersion = False @@ -383,7 +373,7 @@ class Optimizer: if renewal is None: renewal = "loss" - if renewal not in ["acc", "loss", "mse"]: + elif renewal not in ["acc", "loss", "mse"]: raise ValueError("renewal not in ['acc', 'loss', 'mse']") if empirical_balance is None: @@ -392,11 +382,12 @@ class Optimizer: if dispersion is None: dispersion = False - if validate_data is not None: - if validate_data[0].shape[0] != validate_data[1].shape[0]: - raise ValueError("validate_data shape error") - - if validate_data is None: + if ( + validate_data is not None + and validate_data[0].shape[0] != validate_data[1].shape[0] + ): + raise ValueError("validate_data shape error") + else: validate_data = (x, y) if validation_split is not None: @@ -511,7 +502,7 @@ class Optimizer: min_mse = np.inf # 한번의 실행 동안 최고 점수를 받은 파티클의 인덱스 best_particle_index = 0 - # epoch_particle_sum = 0 + part_pbar = tqdm( range(len(self.particles)), desc=f"loss: {min_loss:.4f} acc: {max_acc:.4f} mse: {min_mse:.4f}", @@ -520,7 +511,6 @@ class Optimizer: position=1, ) - # w = self.w_max - (self.w_max - self.w_min) * epoch / epochs w = ( self.w_max - (self.w_max - self.w_min) @@ -572,22 +562,6 @@ class Optimizer: ) p_ = np.exp(-1 * sigma_pre * sigma_post) - # p_ = ( - # 1 - # / (self.n_particles * np.linalg.norm(self.particle_max - self.particle_min)) - # * np.exp( - # -np.power(l_b, 2) / (2 * np.power(self.sigma, 2)) - # ) - # ) - # g_ = ( - # 1 - # / np.linalg.norm(self.c1 - self.c0) - # * np.exp( - # -np.power(l_b, 2) / (2 * np.power(self.sigma, 2)) - # ) - # ) - # w_p = p_ / (p_ + g_) - # w_g = g_ / (p_ + g_) w_p = p_ w_g = 1 - p_ diff --git a/setup.py b/setup.py index ab845d5..aa3794b 100644 --- a/setup.py +++ b/setup.py @@ -23,7 +23,7 @@ setup( "tensorboard", ], packages=find_packages(exclude=[]), - keywords=["pso", "tensorflow", "keras"], + keywords=["pso", "tensorflow", "keras", "optimization","particle swarm optimization","pso2keras"], python_requires=">=3.8", package_data={}, zip_safe=False,