mirror of
https://github.com/jung-geun/PSO.git
synced 2025-12-20 04:50:45 +09:00
23-07-23
메모리 누수 해결 - 완전한 해결은 아니라 대량의 메모리가 필요 mnist 최적값을 찾는 파티클 개수 찾아야 함
This commit is contained in:
14
README.md
14
README.md
@@ -1,4 +1,5 @@
|
|||||||
[](https://github.com/jung-geun/PSO/actions/workflows/pypi.yml)
|
[](https://github.com/jung-geun/PSO/actions/workflows/pypi.yml)
|
||||||
|
<a href="https://colab.research.google.com/github/jung-geun/PSO/blob/master/pso2keras.ipynb" target="_parent"><img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open In Colab"/></a>
|
||||||
|
|
||||||
# PSO 알고리즘 구현 및 새로운 시도
|
# PSO 알고리즘 구현 및 새로운 시도
|
||||||
|
|
||||||
@@ -41,13 +42,22 @@ pip install pso2keras==0.1.4
|
|||||||
|
|
||||||
위의 패키지를 사용하기 위해서는 tensorflow 와 tensorboard 가 설치되어 있어야 합니다
|
위의 패키지를 사용하기 위해서는 tensorflow 와 tensorboard 가 설치되어 있어야 합니다
|
||||||
|
|
||||||
|
python 패키지를 사용하기 위한 라이브러리는 아래 코드를 사용합니다
|
||||||
|
|
||||||
|
```python
|
||||||
|
from pso import Optimizer
|
||||||
|
|
||||||
|
pso_model = Optimizer(...)
|
||||||
|
pso_model.fit(...)
|
||||||
|
```
|
||||||
|
|
||||||
# 현재 진행 상황
|
# 현재 진행 상황
|
||||||
|
|
||||||
## 1. PSO 알고리즘 구현
|
## 1. PSO 알고리즘 구현
|
||||||
|
|
||||||
### 파일 구조
|
### 파일 구조
|
||||||
|
|
||||||
```plain text
|
```plain
|
||||||
|-- /conda_env # conda 환경 설정 파일
|
|-- /conda_env # conda 환경 설정 파일
|
||||||
| |-- environment.yaml # conda 환경 설정 파일
|
| |-- environment.yaml # conda 환경 설정 파일
|
||||||
|-- /metacode # pso 기본 코드
|
|-- /metacode # pso 기본 코드
|
||||||
@@ -212,7 +222,7 @@ best_score = pso_mnist.fit(
|
|||||||
> 머신러닝 분류 방식에 존재하는 random forest 방식을 이용하여, 오차역전파 함수를 최적화 하는 방법이 있을것 같습니다
|
> 머신러닝 분류 방식에 존재하는 random forest 방식을 이용하여, 오차역전파 함수를 최적화 하는 방법이 있을것 같습니다
|
||||||
>
|
>
|
||||||
> > pso 와 random forest 방식이 매우 유사하다고 생각하여 학습할 때 뿐만 아니라 예측 할 때도 이러한 방식으로 사용할 수 있을 것 같습니다
|
> > pso 와 random forest 방식이 매우 유사하다고 생각하여 학습할 때 뿐만 아니라 예측 할 때도 이러한 방식으로 사용할 수 있을 것 같습니다
|
||||||
>
|
>
|
||||||
> 각
|
> 각
|
||||||
|
|
||||||
# 참고 자료
|
# 참고 자료
|
||||||
|
|||||||
10
mnist.py
10
mnist.py
@@ -106,11 +106,11 @@ loss = [
|
|||||||
pso_mnist = Optimizer(
|
pso_mnist = Optimizer(
|
||||||
model,
|
model,
|
||||||
loss=loss[0],
|
loss=loss[0],
|
||||||
n_particles=100,
|
n_particles=1000,
|
||||||
c0=0.25,
|
c0=0.4,
|
||||||
c1=0.4,
|
c1=0.6,
|
||||||
w_min=0.3,
|
w_min=0.5,
|
||||||
w_max=0.9,
|
w_max=0.8,
|
||||||
negative_swarm=0.1,
|
negative_swarm=0.1,
|
||||||
mutation_swarm=0.2,
|
mutation_swarm=0.2,
|
||||||
particle_min=-5,
|
particle_min=-5,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
from .optimizer import Optimizer
|
from .optimizer import Optimizer
|
||||||
from .particle import Particle
|
from .particle import Particle
|
||||||
|
|
||||||
__version__ = "0.1.5"
|
__version__ = "0.1.6"
|
||||||
|
|
||||||
__all__ = [
|
__all__ = [
|
||||||
"Optimizer",
|
"Optimizer",
|
||||||
|
|||||||
@@ -95,16 +95,14 @@ class Optimizer:
|
|||||||
|
|
||||||
print(f"start running time : {self.day}")
|
print(f"start running time : {self.day}")
|
||||||
for i in tqdm(range(self.n_particles), desc="Initializing Particles"):
|
for i in tqdm(range(self.n_particles), desc="Initializing Particles"):
|
||||||
m = keras.models.model_from_json(model.to_json())
|
model_ = keras.models.model_from_json(model.to_json())
|
||||||
init_weights = m.get_weights()
|
w_, sh_, len_ = self._encode(model_.get_weights())
|
||||||
|
|
||||||
w_, sh_, len_ = self._encode(init_weights)
|
|
||||||
w_ = np.random.uniform(particle_min, particle_max, len(w_))
|
w_ = np.random.uniform(particle_min, particle_max, len(w_))
|
||||||
m.set_weights(self._decode(w_, sh_, len_))
|
model_.set_weights(self._decode(w_, sh_, len_))
|
||||||
|
|
||||||
m.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
|
model_.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
|
||||||
self.particles[i] = Particle(
|
self.particles[i] = Particle(
|
||||||
m,
|
model_,
|
||||||
loss,
|
loss,
|
||||||
negative=True if i < negative_swarm * self.n_particles else False,
|
negative=True if i < negative_swarm * self.n_particles else False,
|
||||||
mutation=mutation_swarm,
|
mutation=mutation_swarm,
|
||||||
@@ -112,6 +110,9 @@ class Optimizer:
|
|||||||
if i < negative_swarm * self.n_particles:
|
if i < negative_swarm * self.n_particles:
|
||||||
negative_count += 1
|
negative_count += 1
|
||||||
# del m, init_weights, w_, sh_, len_
|
# del m, init_weights, w_, sh_, len_
|
||||||
|
gc.collect()
|
||||||
|
tf.keras.backend.reset_uids()
|
||||||
|
tf.keras.backend.clear_session()
|
||||||
|
|
||||||
print(f"negative swarm : {negative_count} / {self.n_particles}")
|
print(f"negative swarm : {negative_count} / {self.n_particles}")
|
||||||
print(f"mutation swarm : {mutation_swarm * 100}%")
|
print(f"mutation swarm : {mutation_swarm * 100}%")
|
||||||
@@ -202,7 +203,7 @@ class Optimizer:
|
|||||||
(float): 목적 함수 값
|
(float): 목적 함수 값
|
||||||
"""
|
"""
|
||||||
self.model.set_weights(weights)
|
self.model.set_weights(weights)
|
||||||
self.model.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
|
# self.model.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
|
||||||
score = self.model.evaluate(x, y, verbose=0)[1]
|
score = self.model.evaluate(x, y, verbose=0)[1]
|
||||||
if score > 0:
|
if score > 0:
|
||||||
return 1 / (1 + score)
|
return 1 / (1 + score)
|
||||||
@@ -252,11 +253,8 @@ class Optimizer:
|
|||||||
self.train_summary_writer[i] = tf.summary.create_file_writer(
|
self.train_summary_writer[i] = tf.summary.create_file_writer(
|
||||||
train_log_dir + f"/{i}"
|
train_log_dir + f"/{i}"
|
||||||
)
|
)
|
||||||
except AssertionError as e:
|
|
||||||
print(e)
|
elif check_point is not None or log == 1:
|
||||||
sys.exit(1)
|
|
||||||
try:
|
|
||||||
if check_point is not None or log == 1:
|
|
||||||
if save_path is None:
|
if save_path is None:
|
||||||
raise ValueError("save_path is None")
|
raise ValueError("save_path is None")
|
||||||
else:
|
else:
|
||||||
@@ -290,12 +288,6 @@ class Optimizer:
|
|||||||
self.g_best = p.get_best_weights()
|
self.g_best = p.get_best_weights()
|
||||||
self.g_best_ = p.get_best_weights()
|
self.g_best_ = p.get_best_weights()
|
||||||
|
|
||||||
if local_score[0] == None:
|
|
||||||
local_score[0] = np.inf
|
|
||||||
|
|
||||||
if local_score[1] == None:
|
|
||||||
local_score[1] = 0
|
|
||||||
|
|
||||||
if log == 1:
|
if log == 1:
|
||||||
with open(
|
with open(
|
||||||
f"./{save_path}/{self.day}_{self.n_particles}_{epochs}_{self.c0}_{self.c1}_{self.w_min}_{renewal}.csv",
|
f"./{save_path}/{self.day}_{self.n_particles}_{epochs}_{self.c0}_{self.c1}_{self.w_min}_{renewal}.csv",
|
||||||
@@ -306,10 +298,12 @@ class Optimizer:
|
|||||||
f.write(", ")
|
f.write(", ")
|
||||||
else:
|
else:
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
if log == 2:
|
|
||||||
|
elif log == 2:
|
||||||
with self.train_summary_writer[i].as_default():
|
with self.train_summary_writer[i].as_default():
|
||||||
tf.summary.scalar("loss", local_score[0], step=0)
|
tf.summary.scalar("loss", local_score[0], step=0)
|
||||||
tf.summary.scalar("accuracy", local_score[1], step=0)
|
tf.summary.scalar("accuracy", local_score[1], step=0)
|
||||||
|
|
||||||
del local_score
|
del local_score
|
||||||
gc.collect()
|
gc.collect()
|
||||||
tf.keras.backend.reset_uids()
|
tf.keras.backend.reset_uids()
|
||||||
|
|||||||
@@ -107,7 +107,7 @@ class Particle:
|
|||||||
Returns:
|
Returns:
|
||||||
(float): 점수
|
(float): 점수
|
||||||
"""
|
"""
|
||||||
self.model.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
|
# self.model.compile(loss=self.loss, optimizer="sgd", metrics=["accuracy"])
|
||||||
score = self.model.evaluate(x, y, verbose=0, use_multiprocessing=True)
|
score = self.model.evaluate(x, y, verbose=0, use_multiprocessing=True)
|
||||||
if renewal == "acc":
|
if renewal == "acc":
|
||||||
if score[1] > self.best_score:
|
if score[1] > self.best_score:
|
||||||
|
|||||||
620
pso2keras.ipynb
620
pso2keras.ipynb
@@ -1,620 +0,0 @@
|
|||||||
{
|
|
||||||
"nbformat": 4,
|
|
||||||
"nbformat_minor": 0,
|
|
||||||
"metadata": {
|
|
||||||
"colab": {
|
|
||||||
"provenance": [],
|
|
||||||
"gpuType": "T4",
|
|
||||||
"authorship_tag": "ABX9TyNDijdc1kgN6OY64Tq8UGQH",
|
|
||||||
"include_colab_link": true
|
|
||||||
},
|
|
||||||
"kernelspec": {
|
|
||||||
"name": "python3",
|
|
||||||
"display_name": "Python 3"
|
|
||||||
},
|
|
||||||
"language_info": {
|
|
||||||
"name": "python"
|
|
||||||
},
|
|
||||||
"accelerator": "GPU",
|
|
||||||
"widgets": {
|
|
||||||
"application/vnd.jupyter.widget-state+json": {
|
|
||||||
"52249d81446e4ae29b376ade96d15636": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "HBoxModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_dom_classes": [],
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "HBoxModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/controls",
|
|
||||||
"_view_module_version": "1.5.0",
|
|
||||||
"_view_name": "HBoxView",
|
|
||||||
"box_style": "",
|
|
||||||
"children": [
|
|
||||||
"IPY_MODEL_6dafb96228714fc19c62b97d43c3835c",
|
|
||||||
"IPY_MODEL_a1c7d30b133c4015a7f6ae5aa9b79705",
|
|
||||||
"IPY_MODEL_32b01d1a0d9c4c27b1f4862479e96c86"
|
|
||||||
],
|
|
||||||
"layout": "IPY_MODEL_f44dfe5c3d7d48f99a7071c94ee61b0b"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"6dafb96228714fc19c62b97d43c3835c": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "HTMLModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_dom_classes": [],
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "HTMLModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/controls",
|
|
||||||
"_view_module_version": "1.5.0",
|
|
||||||
"_view_name": "HTMLView",
|
|
||||||
"description": "",
|
|
||||||
"description_tooltip": null,
|
|
||||||
"layout": "IPY_MODEL_e1622198e36d4d23a87ddc05d4466713",
|
|
||||||
"placeholder": "",
|
|
||||||
"style": "IPY_MODEL_3ebf57ddd70642ef8cbda4b25a375e64",
|
|
||||||
"value": "Initializing Particles: 63%"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"a1c7d30b133c4015a7f6ae5aa9b79705": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "FloatProgressModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_dom_classes": [],
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "FloatProgressModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/controls",
|
|
||||||
"_view_module_version": "1.5.0",
|
|
||||||
"_view_name": "ProgressView",
|
|
||||||
"bar_style": "danger",
|
|
||||||
"description": "",
|
|
||||||
"description_tooltip": null,
|
|
||||||
"layout": "IPY_MODEL_b517359a6556481392beb0744b6b7127",
|
|
||||||
"max": 100,
|
|
||||||
"min": 0,
|
|
||||||
"orientation": "horizontal",
|
|
||||||
"style": "IPY_MODEL_2dc41c24eb5243dbbcff659b6e635da1",
|
|
||||||
"value": 63
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"32b01d1a0d9c4c27b1f4862479e96c86": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "HTMLModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_dom_classes": [],
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "HTMLModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/controls",
|
|
||||||
"_view_module_version": "1.5.0",
|
|
||||||
"_view_name": "HTMLView",
|
|
||||||
"description": "",
|
|
||||||
"description_tooltip": null,
|
|
||||||
"layout": "IPY_MODEL_85347ee2ed11446ba3a5a4b39578b1b8",
|
|
||||||
"placeholder": "",
|
|
||||||
"style": "IPY_MODEL_6174b44f218448c98098c7bde09f3fcf",
|
|
||||||
"value": " 63/100 [00:04<00:02, 13.49it/s]"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"f44dfe5c3d7d48f99a7071c94ee61b0b": {
|
|
||||||
"model_module": "@jupyter-widgets/base",
|
|
||||||
"model_name": "LayoutModel",
|
|
||||||
"model_module_version": "1.2.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/base",
|
|
||||||
"_model_module_version": "1.2.0",
|
|
||||||
"_model_name": "LayoutModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "LayoutView",
|
|
||||||
"align_content": null,
|
|
||||||
"align_items": null,
|
|
||||||
"align_self": null,
|
|
||||||
"border": null,
|
|
||||||
"bottom": null,
|
|
||||||
"display": null,
|
|
||||||
"flex": null,
|
|
||||||
"flex_flow": null,
|
|
||||||
"grid_area": null,
|
|
||||||
"grid_auto_columns": null,
|
|
||||||
"grid_auto_flow": null,
|
|
||||||
"grid_auto_rows": null,
|
|
||||||
"grid_column": null,
|
|
||||||
"grid_gap": null,
|
|
||||||
"grid_row": null,
|
|
||||||
"grid_template_areas": null,
|
|
||||||
"grid_template_columns": null,
|
|
||||||
"grid_template_rows": null,
|
|
||||||
"height": null,
|
|
||||||
"justify_content": null,
|
|
||||||
"justify_items": null,
|
|
||||||
"left": null,
|
|
||||||
"margin": null,
|
|
||||||
"max_height": null,
|
|
||||||
"max_width": null,
|
|
||||||
"min_height": null,
|
|
||||||
"min_width": null,
|
|
||||||
"object_fit": null,
|
|
||||||
"object_position": null,
|
|
||||||
"order": null,
|
|
||||||
"overflow": null,
|
|
||||||
"overflow_x": null,
|
|
||||||
"overflow_y": null,
|
|
||||||
"padding": null,
|
|
||||||
"right": null,
|
|
||||||
"top": null,
|
|
||||||
"visibility": null,
|
|
||||||
"width": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"e1622198e36d4d23a87ddc05d4466713": {
|
|
||||||
"model_module": "@jupyter-widgets/base",
|
|
||||||
"model_name": "LayoutModel",
|
|
||||||
"model_module_version": "1.2.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/base",
|
|
||||||
"_model_module_version": "1.2.0",
|
|
||||||
"_model_name": "LayoutModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "LayoutView",
|
|
||||||
"align_content": null,
|
|
||||||
"align_items": null,
|
|
||||||
"align_self": null,
|
|
||||||
"border": null,
|
|
||||||
"bottom": null,
|
|
||||||
"display": null,
|
|
||||||
"flex": null,
|
|
||||||
"flex_flow": null,
|
|
||||||
"grid_area": null,
|
|
||||||
"grid_auto_columns": null,
|
|
||||||
"grid_auto_flow": null,
|
|
||||||
"grid_auto_rows": null,
|
|
||||||
"grid_column": null,
|
|
||||||
"grid_gap": null,
|
|
||||||
"grid_row": null,
|
|
||||||
"grid_template_areas": null,
|
|
||||||
"grid_template_columns": null,
|
|
||||||
"grid_template_rows": null,
|
|
||||||
"height": null,
|
|
||||||
"justify_content": null,
|
|
||||||
"justify_items": null,
|
|
||||||
"left": null,
|
|
||||||
"margin": null,
|
|
||||||
"max_height": null,
|
|
||||||
"max_width": null,
|
|
||||||
"min_height": null,
|
|
||||||
"min_width": null,
|
|
||||||
"object_fit": null,
|
|
||||||
"object_position": null,
|
|
||||||
"order": null,
|
|
||||||
"overflow": null,
|
|
||||||
"overflow_x": null,
|
|
||||||
"overflow_y": null,
|
|
||||||
"padding": null,
|
|
||||||
"right": null,
|
|
||||||
"top": null,
|
|
||||||
"visibility": null,
|
|
||||||
"width": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"3ebf57ddd70642ef8cbda4b25a375e64": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "DescriptionStyleModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "DescriptionStyleModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "StyleView",
|
|
||||||
"description_width": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"b517359a6556481392beb0744b6b7127": {
|
|
||||||
"model_module": "@jupyter-widgets/base",
|
|
||||||
"model_name": "LayoutModel",
|
|
||||||
"model_module_version": "1.2.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/base",
|
|
||||||
"_model_module_version": "1.2.0",
|
|
||||||
"_model_name": "LayoutModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "LayoutView",
|
|
||||||
"align_content": null,
|
|
||||||
"align_items": null,
|
|
||||||
"align_self": null,
|
|
||||||
"border": null,
|
|
||||||
"bottom": null,
|
|
||||||
"display": null,
|
|
||||||
"flex": null,
|
|
||||||
"flex_flow": null,
|
|
||||||
"grid_area": null,
|
|
||||||
"grid_auto_columns": null,
|
|
||||||
"grid_auto_flow": null,
|
|
||||||
"grid_auto_rows": null,
|
|
||||||
"grid_column": null,
|
|
||||||
"grid_gap": null,
|
|
||||||
"grid_row": null,
|
|
||||||
"grid_template_areas": null,
|
|
||||||
"grid_template_columns": null,
|
|
||||||
"grid_template_rows": null,
|
|
||||||
"height": null,
|
|
||||||
"justify_content": null,
|
|
||||||
"justify_items": null,
|
|
||||||
"left": null,
|
|
||||||
"margin": null,
|
|
||||||
"max_height": null,
|
|
||||||
"max_width": null,
|
|
||||||
"min_height": null,
|
|
||||||
"min_width": null,
|
|
||||||
"object_fit": null,
|
|
||||||
"object_position": null,
|
|
||||||
"order": null,
|
|
||||||
"overflow": null,
|
|
||||||
"overflow_x": null,
|
|
||||||
"overflow_y": null,
|
|
||||||
"padding": null,
|
|
||||||
"right": null,
|
|
||||||
"top": null,
|
|
||||||
"visibility": null,
|
|
||||||
"width": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"2dc41c24eb5243dbbcff659b6e635da1": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "ProgressStyleModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "ProgressStyleModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "StyleView",
|
|
||||||
"bar_color": null,
|
|
||||||
"description_width": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"85347ee2ed11446ba3a5a4b39578b1b8": {
|
|
||||||
"model_module": "@jupyter-widgets/base",
|
|
||||||
"model_name": "LayoutModel",
|
|
||||||
"model_module_version": "1.2.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/base",
|
|
||||||
"_model_module_version": "1.2.0",
|
|
||||||
"_model_name": "LayoutModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "LayoutView",
|
|
||||||
"align_content": null,
|
|
||||||
"align_items": null,
|
|
||||||
"align_self": null,
|
|
||||||
"border": null,
|
|
||||||
"bottom": null,
|
|
||||||
"display": null,
|
|
||||||
"flex": null,
|
|
||||||
"flex_flow": null,
|
|
||||||
"grid_area": null,
|
|
||||||
"grid_auto_columns": null,
|
|
||||||
"grid_auto_flow": null,
|
|
||||||
"grid_auto_rows": null,
|
|
||||||
"grid_column": null,
|
|
||||||
"grid_gap": null,
|
|
||||||
"grid_row": null,
|
|
||||||
"grid_template_areas": null,
|
|
||||||
"grid_template_columns": null,
|
|
||||||
"grid_template_rows": null,
|
|
||||||
"height": null,
|
|
||||||
"justify_content": null,
|
|
||||||
"justify_items": null,
|
|
||||||
"left": null,
|
|
||||||
"margin": null,
|
|
||||||
"max_height": null,
|
|
||||||
"max_width": null,
|
|
||||||
"min_height": null,
|
|
||||||
"min_width": null,
|
|
||||||
"object_fit": null,
|
|
||||||
"object_position": null,
|
|
||||||
"order": null,
|
|
||||||
"overflow": null,
|
|
||||||
"overflow_x": null,
|
|
||||||
"overflow_y": null,
|
|
||||||
"padding": null,
|
|
||||||
"right": null,
|
|
||||||
"top": null,
|
|
||||||
"visibility": null,
|
|
||||||
"width": null
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"6174b44f218448c98098c7bde09f3fcf": {
|
|
||||||
"model_module": "@jupyter-widgets/controls",
|
|
||||||
"model_name": "DescriptionStyleModel",
|
|
||||||
"model_module_version": "1.5.0",
|
|
||||||
"state": {
|
|
||||||
"_model_module": "@jupyter-widgets/controls",
|
|
||||||
"_model_module_version": "1.5.0",
|
|
||||||
"_model_name": "DescriptionStyleModel",
|
|
||||||
"_view_count": null,
|
|
||||||
"_view_module": "@jupyter-widgets/base",
|
|
||||||
"_view_module_version": "1.2.0",
|
|
||||||
"_view_name": "StyleView",
|
|
||||||
"description_width": ""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"cells": [
|
|
||||||
{
|
|
||||||
"cell_type": "markdown",
|
|
||||||
"metadata": {
|
|
||||||
"id": "view-in-github",
|
|
||||||
"colab_type": "text"
|
|
||||||
},
|
|
||||||
"source": [
|
|
||||||
"<a href=\"https://colab.research.google.com/github/jung-geun/PSO/blob/master/pso2keras.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"source": [
|
|
||||||
"import sys\n",
|
|
||||||
"print('python version ', sys.version)\n",
|
|
||||||
"\n",
|
|
||||||
"# !pip uninstall pso2keras\n",
|
|
||||||
"!pip install --upgrade pip\n",
|
|
||||||
"!pip install pso2keras==0.1.5"
|
|
||||||
],
|
|
||||||
"metadata": {
|
|
||||||
"colab": {
|
|
||||||
"base_uri": "https://localhost:8080/"
|
|
||||||
},
|
|
||||||
"id": "Qd4s8Pu0nYGs",
|
|
||||||
"outputId": "6390f505-8f70-4a26-f5e2-5c534732c0fc"
|
|
||||||
},
|
|
||||||
"execution_count": 2,
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
|
||||||
"text": [
|
|
||||||
"python version 3.10.6 (main, May 29 2023, 11:10:38) [GCC 11.3.0]\n",
|
|
||||||
"Requirement already satisfied: pip in /usr/local/lib/python3.10/dist-packages (23.2)\n",
|
|
||||||
"\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
|
|
||||||
"\u001b[0mCollecting pso2keras==0.1.5\n",
|
|
||||||
" Obtaining dependency information for pso2keras==0.1.5 from https://files.pythonhosted.org/packages/cc/e9/6694b997be42496d097288cad18e140fc083221b581b5bba4d7c187b48cd/pso2keras-0.1.5-py3-none-any.whl.metadata\n",
|
|
||||||
" Downloading pso2keras-0.1.5-py3-none-any.whl.metadata (8.6 kB)\n",
|
|
||||||
"Requirement already satisfied: tqdm in /usr/local/lib/python3.10/dist-packages (from pso2keras==0.1.5) (4.65.0)\n",
|
|
||||||
"Requirement already satisfied: numpy in /usr/local/lib/python3.10/dist-packages (from pso2keras==0.1.5) (1.22.4)\n",
|
|
||||||
"Requirement already satisfied: pandas in /usr/local/lib/python3.10/dist-packages (from pso2keras==0.1.5) (1.5.3)\n",
|
|
||||||
"Requirement already satisfied: ipython in /usr/local/lib/python3.10/dist-packages (from pso2keras==0.1.5) (7.34.0)\n",
|
|
||||||
"Requirement already satisfied: setuptools>=18.5 in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (67.7.2)\n",
|
|
||||||
"Collecting jedi>=0.16 (from ipython->pso2keras==0.1.5)\n",
|
|
||||||
" Downloading jedi-0.18.2-py2.py3-none-any.whl (1.6 MB)\n",
|
|
||||||
"\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m10.6 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n",
|
|
||||||
"\u001b[?25hRequirement already satisfied: decorator in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (4.4.2)\n",
|
|
||||||
"Requirement already satisfied: pickleshare in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (0.7.5)\n",
|
|
||||||
"Requirement already satisfied: traitlets>=4.2 in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (5.7.1)\n",
|
|
||||||
"Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (3.0.39)\n",
|
|
||||||
"Requirement already satisfied: pygments in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (2.14.0)\n",
|
|
||||||
"Requirement already satisfied: backcall in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (0.2.0)\n",
|
|
||||||
"Requirement already satisfied: matplotlib-inline in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (0.1.6)\n",
|
|
||||||
"Requirement already satisfied: pexpect>4.3 in /usr/local/lib/python3.10/dist-packages (from ipython->pso2keras==0.1.5) (4.8.0)\n",
|
|
||||||
"Requirement already satisfied: python-dateutil>=2.8.1 in /usr/local/lib/python3.10/dist-packages (from pandas->pso2keras==0.1.5) (2.8.2)\n",
|
|
||||||
"Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas->pso2keras==0.1.5) (2022.7.1)\n",
|
|
||||||
"Requirement already satisfied: parso<0.9.0,>=0.8.0 in /usr/local/lib/python3.10/dist-packages (from jedi>=0.16->ipython->pso2keras==0.1.5) (0.8.3)\n",
|
|
||||||
"Requirement already satisfied: ptyprocess>=0.5 in /usr/local/lib/python3.10/dist-packages (from pexpect>4.3->ipython->pso2keras==0.1.5) (0.7.0)\n",
|
|
||||||
"Requirement already satisfied: wcwidth in /usr/local/lib/python3.10/dist-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython->pso2keras==0.1.5) (0.2.6)\n",
|
|
||||||
"Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.8.1->pandas->pso2keras==0.1.5) (1.16.0)\n",
|
|
||||||
"Downloading pso2keras-0.1.5-py3-none-any.whl (11 kB)\n",
|
|
||||||
"Installing collected packages: jedi, pso2keras\n",
|
|
||||||
" Attempting uninstall: pso2keras\n",
|
|
||||||
" Found existing installation: pso2keras 0.1.0\n",
|
|
||||||
" Uninstalling pso2keras-0.1.0:\n",
|
|
||||||
" Successfully uninstalled pso2keras-0.1.0\n",
|
|
||||||
"Successfully installed jedi-0.18.2 pso2keras-0.1.5\n",
|
|
||||||
"\u001b[33mWARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv\u001b[0m\u001b[33m\n",
|
|
||||||
"\u001b[0m"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"cell_type": "code",
|
|
||||||
"execution_count": 5,
|
|
||||||
"metadata": {
|
|
||||||
"colab": {
|
|
||||||
"base_uri": "https://localhost:8080/",
|
|
||||||
"height": 458,
|
|
||||||
"referenced_widgets": [
|
|
||||||
"52249d81446e4ae29b376ade96d15636",
|
|
||||||
"6dafb96228714fc19c62b97d43c3835c",
|
|
||||||
"a1c7d30b133c4015a7f6ae5aa9b79705",
|
|
||||||
"32b01d1a0d9c4c27b1f4862479e96c86",
|
|
||||||
"f44dfe5c3d7d48f99a7071c94ee61b0b",
|
|
||||||
"e1622198e36d4d23a87ddc05d4466713",
|
|
||||||
"3ebf57ddd70642ef8cbda4b25a375e64",
|
|
||||||
"b517359a6556481392beb0744b6b7127",
|
|
||||||
"2dc41c24eb5243dbbcff659b6e635da1",
|
|
||||||
"85347ee2ed11446ba3a5a4b39578b1b8",
|
|
||||||
"6174b44f218448c98098c7bde09f3fcf"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"id": "bVWF-rQ3j_ld",
|
|
||||||
"outputId": "303830cd-14b4-4fe5-f75c-a5280ad03f35"
|
|
||||||
},
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"output_type": "stream",
|
|
||||||
"name": "stdout",
|
|
||||||
"text": [
|
|
||||||
"x_test : (28, 28, 1) | y_test : (10,)\n",
|
|
||||||
"start running time : 20230721-063118\n"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"output_type": "display_data",
|
|
||||||
"data": {
|
|
||||||
"text/plain": [
|
|
||||||
"Initializing Particles: 0%| | 0/100 [00:00<?, ?it/s]"
|
|
||||||
],
|
|
||||||
"application/vnd.jupyter.widget-view+json": {
|
|
||||||
"version_major": 2,
|
|
||||||
"version_minor": 0,
|
|
||||||
"model_id": "52249d81446e4ae29b376ade96d15636"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"output_type": "error",
|
|
||||||
"ename": "KeyboardInterrupt",
|
|
||||||
"evalue": "ignored",
|
|
||||||
"traceback": [
|
|
||||||
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
||||||
"\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)",
|
|
||||||
"\u001b[0;32m<ipython-input-5-3fcd5b26d5e8>\u001b[0m in \u001b[0;36m<cell line: 73>\u001b[0;34m()\u001b[0m\n\u001b[1;32m 71\u001b[0m \u001b[0mloss\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m'mean_squared_error'\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 72\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 73\u001b[0;31m pso_mnist = Optimizer(\n\u001b[0m\u001b[1;32m 74\u001b[0m \u001b[0mmodel\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 75\u001b[0m \u001b[0mloss\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/pso/optimizer.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, model, loss, n_particles, c0, c1, w_min, w_max, negative_swarm, mutation_swarm, np_seed, tf_seed, random_state, particle_min, particle_max)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0mw_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msh_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minit_weights\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0mw_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mrandom\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0muniform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mparticle_min\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mparticle_max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mw_\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 103\u001b[0;31m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mset_weights\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_decode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mw_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0msh_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlen_\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0mm\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcompile\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloss\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0moptimizer\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"sgd\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmetrics\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"accuracy\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/engine/base_layer.py\u001b[0m in \u001b[0;36mset_weights\u001b[0;34m(self, weights)\u001b[0m\n\u001b[1;32m 1833\u001b[0m \u001b[0mweight_index\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1834\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1835\u001b[0;31m \u001b[0mbackend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbatch_set_value\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mweight_value_tuples\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1836\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1837\u001b[0m \u001b[0;31m# Perform any layer defined finalization of the layer state.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/util/traceback_utils.py\u001b[0m in \u001b[0;36merror_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 148\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 149\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 150\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfn\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 151\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 152\u001b[0m \u001b[0mfiltered_tb\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0m_process_traceback_frames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0me\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m__traceback__\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/util/dispatch.py\u001b[0m in \u001b[0;36mop_dispatch_handler\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 1174\u001b[0m \u001b[0;31m# Fallback dispatch system (dispatch v1):\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1175\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1176\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mdispatch_target\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1177\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0;34m(\u001b[0m\u001b[0mTypeError\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1178\u001b[0m \u001b[0;31m# Note: convert_to_eager_tensor currently raises a ValueError, not a\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/backend.py\u001b[0m in \u001b[0;36mbatch_set_value\u001b[0;34m(tuples)\u001b[0m\n\u001b[1;32m 4310\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtuples\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4311\u001b[0m \u001b[0mvalue\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0masarray\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype_numpy\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4312\u001b[0;31m \u001b[0m_assign_value_to_variable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4313\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4314\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mget_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_default\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/keras/backend.py\u001b[0m in \u001b[0;36m_assign_value_to_variable\u001b[0;34m(variable, value)\u001b[0m\n\u001b[1;32m 4358\u001b[0m \u001b[0;32melse\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4359\u001b[0m \u001b[0;31m# For the normal tf.Variable assign\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 4360\u001b[0;31m \u001b[0mvariable\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massign\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4361\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 4362\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/ops/resource_variable_ops.py\u001b[0m in \u001b[0;36massign\u001b[0;34m(self, value, use_locking, name, read_value)\u001b[0m\n\u001b[1;32m 972\u001b[0m \u001b[0;31m# initialize the variable.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 973\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0m_handle_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mhandle\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 974\u001b[0;31m \u001b[0mvalue_tensor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconvert_to_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 975\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_shape\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mis_compatible_with\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue_tensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 976\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mname\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/profiler/trace.py\u001b[0m in \u001b[0;36mwrapped\u001b[0;34m(*args, **kwargs)\u001b[0m\n\u001b[1;32m 181\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtrace_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mtrace_kwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 182\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 183\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 184\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 185\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mwrapped\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/ops.py\u001b[0m in \u001b[0;36mconvert_to_tensor\u001b[0;34m(value, dtype, name, as_ref, preferred_dtype, dtype_hint, ctx, accepted_result_types)\u001b[0m\n\u001b[1;32m 1640\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1641\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mret\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1642\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconversion_func\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mas_ref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mas_ref\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1643\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1644\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mret\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0mNotImplemented\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/tensor_conversion_registry.py\u001b[0m in \u001b[0;36m_default_conversion_function\u001b[0;34m(***failed resolving arguments***)\u001b[0m\n\u001b[1;32m 46\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_default_conversion_function\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mas_ref\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 47\u001b[0m \u001b[0;32mdel\u001b[0m \u001b[0mas_ref\u001b[0m \u001b[0;31m# Unused.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 48\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mconstant_op\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mconstant\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mname\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mname\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 49\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/constant_op.py\u001b[0m in \u001b[0;36mconstant\u001b[0;34m(value, dtype, shape, name)\u001b[0m\n\u001b[1;32m 266\u001b[0m \u001b[0mValueError\u001b[0m\u001b[0;34m:\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcalled\u001b[0m \u001b[0mon\u001b[0m \u001b[0ma\u001b[0m \u001b[0msymbolic\u001b[0m \u001b[0mtensor\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 267\u001b[0m \"\"\"\n\u001b[0;32m--> 268\u001b[0;31m return _constant_impl(value, dtype, shape, name, verify_shape=False,\n\u001b[0m\u001b[1;32m 269\u001b[0m allow_broadcast=True)\n\u001b[1;32m 270\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/constant_op.py\u001b[0m in \u001b[0;36m_constant_impl\u001b[0;34m(value, dtype, shape, name, verify_shape, allow_broadcast)\u001b[0m\n\u001b[1;32m 278\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mtrace\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mTrace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"tf.constant\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 279\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0m_constant_eager_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mctx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverify_shape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 280\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0m_constant_eager_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mctx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverify_shape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 281\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 282\u001b[0m \u001b[0mg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_default_graph\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/constant_op.py\u001b[0m in \u001b[0;36m_constant_eager_impl\u001b[0;34m(ctx, value, dtype, shape, verify_shape)\u001b[0m\n\u001b[1;32m 303\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0m_constant_eager_impl\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mctx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mshape\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mverify_shape\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 304\u001b[0m \u001b[0;34m\"\"\"Creates a constant on the current device.\"\"\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 305\u001b[0;31m \u001b[0mt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mconvert_to_eager_tensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mctx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 306\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mshape\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 307\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;32m/usr/local/lib/python3.10/dist-packages/tensorflow/python/framework/constant_op.py\u001b[0m in \u001b[0;36mconvert_to_eager_tensor\u001b[0;34m(value, ctx, dtype)\u001b[0m\n\u001b[1;32m 101\u001b[0m \u001b[0mdtype\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdtypes\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_dtype\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mas_datatype_enum\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 102\u001b[0m \u001b[0mctx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mensure_initialized\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 103\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mEagerTensor\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mctx\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdevice_name\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdtype\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 104\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 105\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
||||||
"\u001b[0;31mKeyboardInterrupt\u001b[0m: "
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"source": [
|
|
||||||
"# %%\n",
|
|
||||||
"import os\n",
|
|
||||||
"import sys\n",
|
|
||||||
"\n",
|
|
||||||
"os.environ[\"TF_CPP_MIN_LOG_LEVEL\"] = \"2\"\n",
|
|
||||||
"\n",
|
|
||||||
"import gc\n",
|
|
||||||
"\n",
|
|
||||||
"import tensorflow as tf\n",
|
|
||||||
"from keras.datasets import mnist\n",
|
|
||||||
"from keras.layers import Conv2D, Dense, Dropout, Flatten, MaxPooling2D\n",
|
|
||||||
"from keras.models import Sequential\n",
|
|
||||||
"from tensorflow import keras\n",
|
|
||||||
"\n",
|
|
||||||
"from pso import Optimizer\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"def get_data():\n",
|
|
||||||
" (x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
|
|
||||||
"\n",
|
|
||||||
" x_train, x_test = x_train / 255.0, x_test / 255.0\n",
|
|
||||||
" x_train = x_train.reshape((60000, 28, 28, 1))\n",
|
|
||||||
" x_test = x_test.reshape((10000, 28, 28, 1))\n",
|
|
||||||
"\n",
|
|
||||||
" y_train, y_test = tf.one_hot(y_train, 10), tf.one_hot(y_test, 10)\n",
|
|
||||||
"\n",
|
|
||||||
" x_train, x_test = tf.convert_to_tensor(x_train), tf.convert_to_tensor(x_test)\n",
|
|
||||||
" y_train, y_test = tf.convert_to_tensor(y_train), tf.convert_to_tensor(y_test)\n",
|
|
||||||
"\n",
|
|
||||||
" print(f\"x_train : {x_train[0].shape} | y_train : {y_train[0].shape}\")\n",
|
|
||||||
" print(f\"x_test : {x_test[0].shape} | y_test : {y_test[0].shape}\")\n",
|
|
||||||
"\n",
|
|
||||||
" return x_train, y_train, x_test, y_test\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"def get_data_test():\n",
|
|
||||||
" (x_train, y_train), (x_test, y_test) = mnist.load_data()\n",
|
|
||||||
" x_test = x_test / 255.0\n",
|
|
||||||
" x_test = x_test.reshape((10000, 28, 28, 1))\n",
|
|
||||||
"\n",
|
|
||||||
" y_test = tf.one_hot(y_test, 10)\n",
|
|
||||||
"\n",
|
|
||||||
" x_test = tf.convert_to_tensor(x_test)\n",
|
|
||||||
" y_test = tf.convert_to_tensor(y_test)\n",
|
|
||||||
"\n",
|
|
||||||
" print(f\"x_test : {x_test[0].shape} | y_test : {y_test[0].shape}\")\n",
|
|
||||||
"\n",
|
|
||||||
" return x_test, y_test\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"def make_model():\n",
|
|
||||||
" model = Sequential()\n",
|
|
||||||
" model.add(\n",
|
|
||||||
" Conv2D(32, kernel_size=(5, 5), activation=\"relu\", input_shape=(28, 28, 1))\n",
|
|
||||||
" )\n",
|
|
||||||
" model.add(MaxPooling2D(pool_size=(3, 3)))\n",
|
|
||||||
" model.add(Conv2D(64, kernel_size=(3, 3), activation=\"relu\"))\n",
|
|
||||||
" model.add(MaxPooling2D(pool_size=(2, 2)))\n",
|
|
||||||
" model.add(Dropout(0.25))\n",
|
|
||||||
" model.add(Flatten())\n",
|
|
||||||
" model.add(Dense(128, activation=\"relu\"))\n",
|
|
||||||
" model.add(Dense(10, activation=\"softmax\"))\n",
|
|
||||||
"\n",
|
|
||||||
" return model\n",
|
|
||||||
"\n",
|
|
||||||
"\n",
|
|
||||||
"# %%\n",
|
|
||||||
"model = make_model()\n",
|
|
||||||
"x_train, y_train = get_data_test()\n",
|
|
||||||
"\n",
|
|
||||||
"loss = 'mean_squared_error'\n",
|
|
||||||
"\n",
|
|
||||||
"pso_mnist = Optimizer(\n",
|
|
||||||
" model,\n",
|
|
||||||
" loss=loss,\n",
|
|
||||||
" n_particles=100,\n",
|
|
||||||
" c0=0.3,\n",
|
|
||||||
" c1=0.5,\n",
|
|
||||||
" w_min=0.4,\n",
|
|
||||||
" w_max=0.7,\n",
|
|
||||||
" negative_swarm=0.1,\n",
|
|
||||||
" mutation_swarm=0.2,\n",
|
|
||||||
" particle_min=-5,\n",
|
|
||||||
" particle_max=5,\n",
|
|
||||||
")\n",
|
|
||||||
"\n",
|
|
||||||
"best_score = pso_mnist.fit(\n",
|
|
||||||
" x_train,\n",
|
|
||||||
" y_train,\n",
|
|
||||||
" epochs=200,\n",
|
|
||||||
" save_info=True,\n",
|
|
||||||
" log=2,\n",
|
|
||||||
" log_name=\"mnist\",\n",
|
|
||||||
" save_path=\"./result/mnist\",\n",
|
|
||||||
" renewal=\"acc\",\n",
|
|
||||||
" check_point=25,\n",
|
|
||||||
")\n",
|
|
||||||
"\n",
|
|
||||||
"print(\"Done!\")\n",
|
|
||||||
"\n",
|
|
||||||
"gc.collect()\n",
|
|
||||||
"sys.exit(0)\n"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
Reference in New Issue
Block a user