mirror of
https://github.com/jung-geun/PSO.git
synced 2025-12-20 04:50:45 +09:00
pso2keras 버전을 1.0.5에서 1.0.5.1로 업데이트하고, TensorFlow GPU 메모리 성장을 설정하고, TF_CPP_MIN_LOG_LEVEL을 2로 설정했습니다.
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
variables:
|
variables:
|
||||||
PYTHON_VERSION: "3.9"
|
PYTHON_VERSION: "3.9"
|
||||||
TWINE_USERNAME: "__token__"
|
TWINE_USERNAME: $PYPI_USERNAME
|
||||||
|
TWINE_PASSWORD: $PYPI_PASSWORD
|
||||||
|
|
||||||
build-pypi:
|
build-pypi:
|
||||||
stage: build-pypi
|
stage: build-pypi
|
||||||
|
|||||||
@@ -4,6 +4,12 @@
|
|||||||
[](https://sonar.pieroot.xyz/dashboard?id=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a)
|
[](https://sonar.pieroot.xyz/dashboard?id=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a)
|
||||||
[](https://sonar.pieroot.xyz/dashboard?id=pieroot_pso_6a2f36a9-2688-4900-a4a5-5be85f36f75a)
|
[](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-알고리즘-구현-및-새로운-시도)</br>
|
> [PSO 알고리즘 구현 및 새로운 시도](#pso-알고리즘-구현-및-새로운-시도)</br>
|
||||||
|
|||||||
@@ -1,10 +1,21 @@
|
|||||||
|
import tensorflow as tf
|
||||||
|
import os
|
||||||
from .optimizer import Optimizer as optimizer
|
from .optimizer import Optimizer as optimizer
|
||||||
from .particle import Particle as particle
|
from .particle import Particle as particle
|
||||||
|
|
||||||
__version__ = "1.0.5"
|
__version__ = "1.0.5.1"
|
||||||
|
|
||||||
print("pso2keras version : " + __version__)
|
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__ = [
|
__all__ = [
|
||||||
"optimizer",
|
"optimizer",
|
||||||
"particle",
|
"particle",
|
||||||
|
|||||||
@@ -16,15 +16,6 @@ from tqdm.auto import tqdm
|
|||||||
|
|
||||||
from .particle import Particle
|
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():
|
def find_free_port():
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
@@ -123,7 +114,6 @@ class Optimizer:
|
|||||||
mutation_swarm # 관성을 추가로 사용할 파티클 비율 - 0 ~ 1 사이의 값
|
mutation_swarm # 관성을 추가로 사용할 파티클 비율 - 0 ~ 1 사이의 값
|
||||||
)
|
)
|
||||||
self.avg_score = 0 # 평균 점수
|
self.avg_score = 0 # 평균 점수
|
||||||
# self.sigma = 1.0
|
|
||||||
|
|
||||||
self.renewal = "acc"
|
self.renewal = "acc"
|
||||||
self.dispersion = False
|
self.dispersion = False
|
||||||
@@ -383,7 +373,7 @@ class Optimizer:
|
|||||||
if renewal is None:
|
if renewal is None:
|
||||||
renewal = "loss"
|
renewal = "loss"
|
||||||
|
|
||||||
if renewal not in ["acc", "loss", "mse"]:
|
elif renewal not in ["acc", "loss", "mse"]:
|
||||||
raise ValueError("renewal not in ['acc', 'loss', 'mse']")
|
raise ValueError("renewal not in ['acc', 'loss', 'mse']")
|
||||||
|
|
||||||
if empirical_balance is None:
|
if empirical_balance is None:
|
||||||
@@ -392,11 +382,12 @@ class Optimizer:
|
|||||||
if dispersion is None:
|
if dispersion is None:
|
||||||
dispersion = False
|
dispersion = False
|
||||||
|
|
||||||
if validate_data is not None:
|
if (
|
||||||
if validate_data[0].shape[0] != validate_data[1].shape[0]:
|
validate_data is not None
|
||||||
|
and validate_data[0].shape[0] != validate_data[1].shape[0]
|
||||||
|
):
|
||||||
raise ValueError("validate_data shape error")
|
raise ValueError("validate_data shape error")
|
||||||
|
else:
|
||||||
if validate_data is None:
|
|
||||||
validate_data = (x, y)
|
validate_data = (x, y)
|
||||||
|
|
||||||
if validation_split is not None:
|
if validation_split is not None:
|
||||||
@@ -511,7 +502,7 @@ class Optimizer:
|
|||||||
min_mse = np.inf
|
min_mse = np.inf
|
||||||
# 한번의 실행 동안 최고 점수를 받은 파티클의 인덱스
|
# 한번의 실행 동안 최고 점수를 받은 파티클의 인덱스
|
||||||
best_particle_index = 0
|
best_particle_index = 0
|
||||||
# epoch_particle_sum = 0
|
|
||||||
part_pbar = tqdm(
|
part_pbar = tqdm(
|
||||||
range(len(self.particles)),
|
range(len(self.particles)),
|
||||||
desc=f"loss: {min_loss:.4f} acc: {max_acc:.4f} mse: {min_mse:.4f}",
|
desc=f"loss: {min_loss:.4f} acc: {max_acc:.4f} mse: {min_mse:.4f}",
|
||||||
@@ -520,7 +511,6 @@ class Optimizer:
|
|||||||
position=1,
|
position=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
# w = self.w_max - (self.w_max - self.w_min) * epoch / epochs
|
|
||||||
w = (
|
w = (
|
||||||
self.w_max
|
self.w_max
|
||||||
- (self.w_max - self.w_min)
|
- (self.w_max - self.w_min)
|
||||||
@@ -572,22 +562,6 @@ class Optimizer:
|
|||||||
)
|
)
|
||||||
p_ = np.exp(-1 * sigma_pre * sigma_post)
|
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_p = p_
|
||||||
w_g = 1 - p_
|
w_g = 1 - p_
|
||||||
|
|
||||||
|
|||||||
2
setup.py
2
setup.py
@@ -23,7 +23,7 @@ setup(
|
|||||||
"tensorboard",
|
"tensorboard",
|
||||||
],
|
],
|
||||||
packages=find_packages(exclude=[]),
|
packages=find_packages(exclude=[]),
|
||||||
keywords=["pso", "tensorflow", "keras"],
|
keywords=["pso", "tensorflow", "keras", "optimization","particle swarm optimization","pso2keras"],
|
||||||
python_requires=">=3.8",
|
python_requires=">=3.8",
|
||||||
package_data={},
|
package_data={},
|
||||||
zip_safe=False,
|
zip_safe=False,
|
||||||
|
|||||||
Reference in New Issue
Block a user