Study
-
논문리뷰 A Study of BFLOAT16 for Deep Learning TrainingStudy/ML 2021. 8. 30. 22:16
Abstraction & Introduction 이 논문은 19년도에 발표된 논문으로 딥러닝 half precision 기법에서 INT16, FP16 대신 Bfloat16을 제안합니다. Bfloat16란 16bit floating 숫자로 아래 사진에 나와있듯이 FP32와 지수 부분 비트수가 같다는 특징이 있습니다. 그래서 FP32보다는 정확도는 떨어지지만 표현할수 있는 범위가 같다는 특징이 있습니다. 원래 BFloat16는 구글의 DistBelief 머신러닝 프레임워크에서 처음 제안됬습니다. 멀티 node 환경에서 shared memory의 volume을 줄이기 위해 제안된 데이터 타입으로 지금은 이제 딥러닝의 computing에 있어서 사용됩니다. f Eng 1.f [약어] 여성(female) 2.f1..
-
논문 리뷰 DoReFa-Net : CNN 모델에서 weight, activation, gradient의 quantizationStudy/ML 2021. 8. 4. 17:59
DoReFa-Net TRAINING LOW BITWIDTH CONVOLUTIONAL NEURAL NETWORKS WITH LOW BITWIDTH GRADIENTS https://arxiv.org/abs/1606.06160 DoReFa-Net: Training Low Bitwidth Convolutional Neural Networks with Low Bitwidth Gradients We propose DoReFa-Net, a method to train convolutional neural networks that have low bitwidth weights and activations using low bitwidth parameter gradients. In particular, during ba..
-
[Design Pattern] Template Method Pattern 템플릿 메소드 패턴Study/Design Pattern 2021. 7. 31. 21:39
템플릿 메소드 패턴이란 비지니스 로직은 세부 구현으로 부터 분리하는 디자인 패턴으로 GOF에 따르면 다음과 같다. 즉 간단하게 말하자면 여러 클래스에서 공통된 행위를 상위 클래스에서 정의하고, 하위 클래스에서 각각의 상세부분을 구현하는 것을 말한다. 더보기 알고리즘의 구조를 메소드에 정의하고, 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재정의 하는 패턴이다. 알고리즘이 단계별로 나누어 지거나, 같은 역할을 하는 메소드이지만 여러곳에서 다른형태로 사용이 필요한 경우 유용한 패턴이다. – GoF Design Patterns 만약 다음과 같이 Gun이라는 추상클래스가 존재하고 shoot이라는 메소드를 가진다고 가정하자. shoot은 3가지 단계로 이루어진것을 확인할 수 있다. 하지만 각 단계의 구현은..
-
[Design Pattern] Observer Pattern 옵저버 패턴Study/Design Pattern 2021. 7. 28. 19:10
여러 객체를 구현하면 객체끼리 의존 관계를 가지기도 합니다. 예를 들어 '오늘의 메뉴'라는 객체가 있고 학생들 객체가 있으면, 오늘의 메뉴 객체의 내용에 따라 학생들이 먹는 음식 또한 달라질 것입니다. 이처럼 의존성을 가지는 다른 객체들에게 변경 상황을 알릴 필요가 있는데 이때 사용되는 디자인 패턴이 옵저버 패턴입니다. 옵저버 패턴은 객체 사이에 일 대 다의 의존 관계를 정의해 두어, 어떤 객체의 상태가 변할 때 그 객체에 의존성을 가진 다른 객체들이 그 변화를 통지받고 자동으로 갱신될 수 있게 만듭니다. class TodayMenu { public String meal; public String soup; public String sideDish1; public String sideDish2; } pu..
-
[Design Pattern] Builder Pattern 빌더 패턴Study/Design Pattern 2021. 7. 22. 01:23
public class Person{ private final String name; private final int age; private final String country; private final String gender; } 빌더 패턴은 객체를 생성하는 패턴으로 팩토리 패턴과는 또 다른 디자인 패턴입니다. 만약 위와 같은 Person이라는 클래스를 가정해보겠습니다. 만약 이 클래스를 생성자로 직접 생성한다면 다음과 같은 문제점이 발생할 수 있습니다. 1. 클라이언트에서 생성자로 파라미터를 넘겨줄 때, 파라미터 수가 많으면 타입, 순서 관리가 어려워지고 가독성이 떨어집니다. 만약 Person의 멤버 변수가 위와 같이 4개가 아닌 10개, 20개처럼 많으면 아래 코드처럼 생성자의 파라미터 부분이 ..
-
[Design Pattern] Strategy Pattern 전략 패턴Study/Design Pattern 2021. 7. 18. 18:36
client [ˈklaɪənt] Eng 1.client [명사] (전문가의 서비스를 받는) 의뢰인[고객] 2.Client (호텔) 고객을 말한다. 3.client state [명사] 의존국(더 큰 강대국의 지원과 보호에 기대는 나라) 4.client-server [형용사] (명사 앞에만 씀) (컴퓨터) 컴퓨터 시스템이 클라이언트 서버형인(중앙의 서버로 연결된 여러 대의 컴퓨터가 데이터를 공유하는 시스템인) 참조 peer-to-peer 5.mail client (컴퓨터) 이메일 고객 ((이메일 송수신 서비스를 받는 컴퓨터)) 6.고객 顧客 (상점 등의) customer; (호텔 등의) guest; (단골 ) (formal) patron; (변호사·은행 등의) client; (집합적) clientele 7...
-
[Design Pattern] Adapter Pattern 어댑터 패턴Study/Design Pattern 2021. 7. 18. 01:15
어댑터 패턴이란 어떤 인터페이스를 상속받는 클래스를 다른 인터페이스로 변환하여 사용하고자 할 때 사용되는 디자인 패턴이다. 이를 통해 관계가 없는 인터페이스들을 같이 사용 가능하고, 클래스의 재활용성이 증가하는 장점이 있다. // Human 인터페이스 public interface Human{ public void talk(); public void walk(); } // 구현 class public class Asian implements Human{ @Override public void talk(){ System.out.println("I am an Asian"); } public void walk(){ System.out.println("Asian walks"); } } // Dog 인터페이스 p..
-
[Design Pattern] Factory Pattern 팩토리 패턴Study/Design Pattern 2021. 7. 17. 21:24
인터페이스를 상속받는 구현 클래스들의 객체를 생성할 때, 생성자를 통해 직접 생성하는 것이 아닌 해당 인터페이스를 상속하는 하위 클래스에서 객체를 생성하는 것을 팩토리 패턴이라고 한다. 즉 객체 생성을 다른 서브 클래스로 캡슐화하여 구현 클래스에 대한 의존성을 줄이는 것이다. 이를 통해 얻을수 있는 효과는 클래스간의 결합도를 낮춰, 변경과 제거를 최소화 할 수 있다. 만약 음식이라는 클래스를 상속받는 여러 음료수 하위 클래스가 존재하는 상황을 가정해 보겠다. // Food 추상 클래스 public abstract class Food{ public abstract String eat(); } /////////////////////////////// public class Pizza extends Food{..