일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 클라우드
- 반도체
- cloud
- CuDNN
- 양자역학의공준
- FPGA
- quantum_computing
- deep_learning
- CUDA
- GPU
- 반도체기초
- flash_memory
- jhVM
- stl
- convolution
- 딥러닝
- Semiconductor
- dnn
- SpMM
- sycl
- POD
- Compression
- kubernetes
- 쿠버네티스
- nvidia
- Qubit
- DRAM
- HA
- C++
- jhDNN
- Today
- Total
목록전체 글 (143)
Computing
기존 C-style 랜덤 숫자 생성 방법 및 한계밑의 코드 예시는 기존 C-style code에서 랜덤 숫자 (정확히는 랜덤한 것처럼 느껴지는 pseudo-random 숫자를 생성) 를 생성하는 코드이다. std::rand()함수[1]는 Seed 숫자를 이용해 어떤 숫자를 생성하는데, std::srand() 함수를 이용하면 std::rand()함수가 사용하는 Seed 숫자를 설정할 수 있다. 밑의 코드에서는 std::srand() 함수를 이용해 Seed를 현재 시간으로 설정하였다. #include #include ... std::srand(time(NULL)); 랜덤 생성 시의 Seed 설정. Seed를 현재 시간으로 설정한다. for (int i=0; i
import pandas as pd import numpy as np import tensorflow as tf ############## Training hyper-parameters 정의 lr = 5e-4 batch_size = 4096 num_epoch = 1000 decay = 1e-5 ############## Dataset 정의 all_df = pd.read_csv('./data/7th-data.csv', encoding='cp949', skiprows=1) # Input data 추출 data = all_df.iloc[:, 7:].to_numpy() # Label 추출 anomalyCategory = { 'REAL':1, 'FALSE':0, } label = all_df.iloc[:, 6:7..
항상 헷깔리고 까먹어서 정리한다. =, +=, -=, *= 등과 같은 대입 연산자 (Assignment operator, 대입문, 할당문, Assignment statement)는 대입 연산자의 왼쪽 operand의 reference가 반환된다 [1,2]. int a, b, c; a = 10 // 반환값: reference of a (10) a = b = 20 // a = (b = 20) --> a = 20 (c = 10) = 30 // 1. (c=10)가 c의 reference를 반환하기에 최종 c=30이 됨 std::cout
Singleton 싱글톤 디자인 패턴 Singleton 디자인 패턴을 따르는 클래스는 프로그램에서 유일한 하나의 클래스 객체만이 생성되도록 강제된다. 즉 여러번 클래스의 생성자를 호출하더라도 단 하나의 클래스 객체만이 생성되고, 이후의 생성자 호출은 최초 생성된 클래스 객체만을 반환하도록 구현[1]된다. (위의 정의 그대로) 프로그램 내에 유일하게 하나의 객체만이 생성되어야 하는 경우에, 싱글톤(싱글턴) 디자인 패턴을 적용하여 클래스를 설계하는 것이 유용하다. 예를 들면 하드웨어 장치(GPU, etc.)나 DB connection, thread-pool과 같은 외부 자원을 이용하는 경우에 프로그램 내에 하나의 대표 객체만을 생성하는 것이 안전하다. 이러한 경우에 싱글톤 디자인 패턴을 이용하여 해당 자원을..
Image Embedding ChatGPT에 따르면 Image Embedding이란 다음과 같다. 이미지 임베딩(Image Embedding)은 컴퓨터 비전과 기계 학습 분야에서 사용되는 중요한 개념 중 하나입니다. 이것은 이미지를 수치적인 형태로 표현하는 기술입니다. 이미지 임베딩은 컴퓨터가 이미지를 이해하고 처리하기 위해 사용되며, 이미지를 공간적으로 유용한 표현으로 변환하는 과정입니다. 이러한 표현은 이미지 간 유사성을 측정하거나, 이미지를 검색하고 분류하는 데 사용될 수 있습니다. Image Embedding이란 이미지를 저차원의 벡터로 표현하는 방법을 의미한다. N*M 짜리 RGB 이미지가 있다고 하자. 이미지 자체도 사실 컴퓨터가 보기에는 N*M*3 차원 벡터이다. 다만 이미지가 HD 화질이라..
Red-Black Tree를 통해 구조화된 자료구조: std::set, std::map 이전 글에서 std::set과 std::map은 Associative Container 중 하나들로, Key 기반으로 데이터(value)에 빠르게 접근할 수 있도록 쌍이 저장된다고 정리하였다. 이때 std::set은 key 자체를 데이터(value)로 보아 key 접근만을 빠르게 하도록 구현된다. std::set과 std::map은 컨테이너 내 데이터 관련 연산(데이터 추가, 읽기, 삭제, 존재 여부 등)을 O(log(N))의 time complexity로 수행가능하도록 구현되었다. 이러한 Key 기반 빠른 탐색이 가능하도록 하기 위해 std::set과 std::map은 self-balancing binary sear..
RAII와 동적 메모리 자원 관리 이전글에서 C++에서 자원 관리를 용이하게 해주는 RAII 디자인 패턴에 대해서 정리하였다. RAII 디자인 패턴은 자원의 생애 주기 (자원 할당 -> 자원 사용 -> 자원 해제) 를 객체의 생애 (객체의 Constructor 호출 -> 객체의 Destructor 호출) 에 바인드하여 자원 관리를 C++ 런타임에서 자동으로 맡기는 기법이다. RAII 디자인 패턴을 달성하기 위해 만들어진 대표적인 class로는 std::unique_ptr, std::shared_ptr, std::lock_guard가 있다. 이때, std::unique_ptr, std::shared_ptr은 Smart pointer (스마트 포인터) 라고도 한다. 스마트 포인터는 RAII 패턴을 이용해 동..
RAII 개념 RAII (Resource Acuquisition Is Intialization) 는 C++에서 강조되는 디자인 테크닉 중 하나이다[1]. "자원 획득(Resource Acquisition)은 초기화(Initialization)이다" 라고 직역할 수 있는데, 한글로 직역하여도 바로 와닿지는 않을 것이다. 좀 더 풀어서 얘기하자면, 자원 획득을 객체 초기화 시에만 하라, 혹은, 자원 획득이 필요한 경우, 자원 획득을 담당하는 클래스를 만들어 그 클래스의 생성자에서만 자원 획득을 하라고 이해하면 좋을 것 같다. (프로그램을 짜다보면 동적 메모리 할당, 파일 열기, 락 등 자원 획득을 하는 일이 많은데, 이러한 자원 획득을 담당하는 클래스를 만들어 그 클래스의 생성자에서만 자원 획득을 하라고 강..