본문 바로가기

분류 전체보기560

CAE (Convolutional Autoencoder) CAE (Convolutional Autoencoder) - CAE는 auto encoder를 이미지 학습에 적용할 수 있도록 fully connected layer를 convolution layer로 교체해 autoencoder의 기본 구조를 확장 - Encoder에서는 Convolution 연산을 수행하고 Decoder에서는 Transposed convolution 연산 수행 1) Encoder network - convolution layer - convolutional layer에서의 연산은 아래 이미지처럼 처리된다. - convolutional layer에서 output의 길이는 \(output = \frac{input + 2 * padding - kernel}{stride} + 1\)로 정해진.. 2023. 3. 27.
Multiprocessing - multiprocessing(https://docs.python.org/3/library/multiprocessing.html) 공식 문서 참고 Multiprocessing - multiprocessing은 API를 사용해 process spawning 지원 - processing spawning은 parent process가 os에 요청해 새로운 child process를 만들어내는 과정 - local concurrency와 remote concurrency를 지원하며, GIL(Global Interpreter Lock)을 효과적으로 우회 - Local concurrency is defined as "within a system" (e.g. a multi-core CPU), nonlocal conc.. 2023. 3. 24.
Autoencoder 1. 오토인코더(Autoencoder) 어떤 지도 없이 잠재표현(latent representation) 또는 코딩(coding)이라 부르는 input data의 밀집 표현을 학습할 수 있는 인공 신경망 코딩은 input data 보다 훨씬 낮은 차원을 가지므로 차원 축소(dimenssion reduction), 시각화 등에 사용되고, 강력한 특성 추출기(Feature Exractor)처럼 동작하기 떄문에 심층 신경망의 비지도 사전 훈련에 사용. 또한, 일부 오토 인코더는 훈련 데이터와 매우 비슷한 새로운 데이터를 생성하는 생성 모델(generative model)로도 활용될 수 있다. 오토 인코더는 단순히 입력을 출력으로 복사하는 방법을 배우는데, latent space의 크기를 제한하거나 input에.. 2023. 3. 5.
2023.01 [2022년 회고] [2022년 회고] 다사다난했던 2022년이 끝이 나고 새로운 해를 맞이했다. 여전히 같은 파트에서 좋은 사람들과 함께 즐겁게 일을 하고 있다. 새해가 되었을 때 22년도에 찍었던 사진들을 보았다. 서핑, 패러글라이딩, 파타야 여행, 클라이밍, 단이 입양, 가족 여행, 등산, 장영실상 수상, 봉사활동 등 정말 열심히 한 해를 보냈다는 것을 느꼈고 뿌듯했다. 한 해를 보내는 순간에는 더 부지런하게 살지 못한 것에 대해 후회하면서 마무리할 때는 그래도 잘 보냈다? 라는 생각을 하는 것 같다. 특히 올해는 이만큼 공부하고 성장했다는 생각보다, 많을 것을 경험하고 느꼈다라는 생각을 한 특별한 해가 되었다. 삶과 업무, 두 가지 측면에서 작년을 곰곰이 생각해보았다. 먼저 삶에 있어서는 제일 먼저 드는 생각은 유독.. 2023. 1. 16.
[GPDB Administrator 교육 2일차] 보호되어 있는 글 입니다. 2022. 12. 14.
[GreenplumDatabase 교육 1일차] GreenplumDatabase - greenplum은 구조적으로 병렬 아키텍처 1. Greenplum Fundamental Concepts 1) Greenplum Architecture (0) 스케일업과 스케일 아웃 Scale up - 시스템 리소스에 대한 요구가 증가하게 될 경우, 하나의 물리 서버의 리소스 크기(CPU, Memory)를 늘리는 방법 Scale Out - (Greenplum Architecture) - 시스템 리소스에 대한 요구가 증가하게 될 경우, 여러 서버를 증설하는 방법 - 하나의 서버는 각 서버와 독립적으로 테스크를 수행 - Scale Out 구조의 GPDB를 정상적으로 동작하게 하려면 운영 방법에 대한 이해가 필요 https://dheldh77.tistory.com/entry.. 2022. 12. 13.
[Clean Architecture 정리] 27장. '크고 작은 모든' 서비스들 - ing 보호되어 있는 글 입니다. 2022. 9. 20.
[Clean Architecture 정리] 26장. 메인 컴포넌트 26장. 메인 컴포넌트 모든 시스템에는 메인이라는 컴포넌트가 존재하고, 메인이 나머지 컴포넌트의 생성, 조정, 관리의 역할을 담당한다. 궁극적인 세부사항 메인 컴포넌트는 궁극적인 세부 사항으로 가장 낮은 수준의 정책이다. 메인은 팩토리, 전략, 시스템 전반에 필요한 객체들을 생성하고 더 높은 수준에 정책에 제어권을 넘긴다. 스프링과 같은 의존성 주입 프레임 워크에서 의존성을 주입하는 역할을 메인 컴포넌트에서 이뤄진다. 책에서 나온 예제를 보면 메인 컴포넌트와 메인 함수가 있다. 메인 컴포넌트에서 주목할 점은 시스템에서 사용되는 문자열을 로드해서 나머지 핵심 영역에서 이 문자열을 알지 못하도록 한다. 코드에서 문자열은 쉽게 변경될수도 있고, 개발자의 실수로 인해 오타가 발생할 수도 있다. 진행하고 있는 과.. 2022. 9. 16.
[Clean Architecture 정리] 25장. 계층과 경계 25장. 계층과 경계 사냥 게임 어떤 간단한 게임을 만들 때, 1) 다국어 UI를 제공하고 2) 게임 진행 상태를 변경 될 수 있는 저장소에 저장 한다고 가정하자. 위의 형태로 컴포넌트를 분리하고 의존성을 관리하면 어떤 언어에 대한 요구가 있더라도 업무 규칙(Game Rule)을 재사용 가능하고, 저장소의 변경이 업무 규칙에 영향을 주지 않는다. 클린 아키텍처 ? 소프트웨어 시스템이 성장함에 따라서 변경은 계속해서 발생하게 되고, 변경의 축에 의해 정의되는 아키텍처 경계는 잠재되어 있다. 사용자로부터 텍스트를 입력받는 매커니즘이 변경될 수 있다면, 위와 같이 Text Delivery라는 API역할을 하는 추상 컴포넌트를 생성할 수 있다. 이 때, API는 구현하는 쪽이 아닌 사용하는 쪽에서 정의한다. 위.. 2022. 9. 15.
전략 패턴 (Strategy Pattern) 전략(Strategy) 패턴 예제 public class Calculator { public int calculator(boolean firstGuest, List items) { int sum = 0; for (Item item : items) { if (firstGuest) sum += (int) (item.getPrice() * 0.9) else if (! item.isFresh()) sum += (int) (item.getPrice() * 0.8) else sum += item.getPrice() } return sum; } } 위 코드는 첫번째 손님인지 또는 상품의 신선도 여부에 따라 다른 가격 정책을 사용하고 있다. 문제점 서로 다른 계산 정책들이 한 코드에 섞여, 정책이 추가될수록 코드 분석.. 2022. 9. 6.
파사드 패턴(Facade Pattern) 파사드 패턴(Facade Pattern) 파사드 패턴은 어떤 소프트웨어의 다른 커다란 코드 부분에 대한 간략화된 인터페이스를 제공하는 객체 파사드 패턴은 서브 시스템을 감춰 주는 상위 수준의 인터페이스를 제공함으로써 ‘코드 중복'과 ‘직접적인 의존' 문제를 해결하는데 도움을 줌 파사드 패턴 구조 1) 파사드 패턴 적용하기 파사드 패턴을 적용할 수 있는 경우 위와 같은 설계 구조의 코드가 있다고 생각하자 위 설계 구조에서는 세 개의 클래스에서 동일한 Dao에 접근하면서 ‘코드 중복’과 ‘직접적인 의존'이라는 문제점을 가지고 있다. 파사드 패턴 적용하기 파사드를 이용해서 ‘코드 중복'과 ‘직접적인 의존’을 해결 위 설계에서 ‘EmpReportDaoFacade(파사드)는 서브 시스템에 속한 각 Dao를 이용해.. 2022. 9. 6.
[Clean Architecture 정리] 24장. 부분적 경계 24장. 부분적 경계 아키텍처 경계를 완벽하게 만드는 것에는 많은 비용이 든다. 쌍방향의 다형적 인터페이스, 컴포넌트 간 입출력을 위한 데이터 구조, 독립적인 컴포넌트의 배포와 의존성 관리는 비용이 많이 드는 작업이다. 컴포넌트를 분리함에 있어 YAGNI(You Aren't Going to Need it) 원칙에 위배되는 선행적인 설계는 부분적인 경계(partial boundary)를 적용할 수 있다. 단일 컴포넌트 부분적 경계를 만드는 첫번째 방법은 독립적인 컴포넌트를 위한 작업(쌍방향의 다형적 인터페이스, 컴포넌트 간 입출력을 위한 데이터 구조 등)을 수행하지만 단일 컴포넌트에 배포하는 것이다. 이 방법을 적용하면 다수의 컴포넌트를 관리할 비용은 줄어들지만, 완벽한 경계를 위한 사전 작업에 드는 비용.. 2022. 9. 6.