모델의 형태를 어떻게 입력 받을지,
입력 받는 형태에 따라 클래스들의 구조를 어떻게 짤지, 각 클래스, 메서드는 어떠한 역할을 수행할 지, 어떤 정보까지 저장해야 할 지
모델의 정보를 어떻게 저장하고 전달할지
아직 C++ 연동 및 계산 그래프는 생각도 못 했는데,
먼저 모델 정보가 저장되고 출력되는 형태를 정의하고 살펴보자구~~
model.fit 전까지 구현해보자잇~!~!~! 할 수있지??
다시 돌아와서 keras 의 시퀀셜 형태로 모델을 입력받을거라고 가정할거야
sequential 가 최고 엄마 클래스가 되겠지?? 시팔 왜 layer 를 상속받는데 (모델이 또 다른 모델의 레이어가 될 수 있어서래 ㅋ 어이없어 증말 ㅋ)
layer 가 진짜 최고 엄마 클래스 (백엔드 레이어, 오퍼레이터, 케라스 세이브 에이블 이건 일단 무시;;)
모델 정보를 전달하기 위해 직렬화는 필수... pickle 모듈을 사용하자~!
import json
class ExampleClass:
def __init__(self, value):
self.value = value
def to_dict(self):
return {"value": self.value}
# 커스텀 JSON 인코더
class CustomEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, ExampleClass):
return obj.to_dict()
return json.JSONEncoder.default(self, obj)
# 인스턴스를 포함한 딕셔너리
data = {
"number": 42,
"text": "Hello, World!",
"instance": ExampleClass(10)
}
# JSON으로 직렬화
json_data = json.dumps(data, cls=CustomEncoder)
print("JSON 직렬화된 데이터:", json_data)
이 방법은 인스턴스의 상태만 저장하고자 할 때 유용하며, 실제 인스턴스를 저장하는 것보다는 더 안전하고 범용적인 방법입니다
성능과 데이터 크기가 중요할 때는 Protocol Buffers 또는 FlatBuffers와 같은 바이너리 직렬화 형식을 고려해 볼 수 있습니다
'dev_AI_framework' 카테고리의 다른 글
클래스 정보, get_config, from_config (0) | 2024.08.29 |
---|---|
__new__ 메서드의 typeing.casts(cls, super().__new__(cls)) - 객체의 타입을 명시적 지정 (0) | 2024.08.29 |
계산 그래프 (1) | 2024.08.28 |
c++ 연동 (1) | 2024.08.28 |
config 파일의 구성 - 레이어에 대한 정보 저장, build 에서의 사용 (0) | 2024.08.28 |