본문 바로가기

전체 글

BOJ 9205(맥주 마시면서 걸어가기) 풀이(BFS) - 플로이드 와샬 혹은 BFS 문제이다. - 이웃한 점을 기준으로 서로간에 이동이 가능하면, 그래프를 정의해주는 것이 핵심이다. 즉, 아래와 같이 조건을 만족할 경우 그래프를 그려준다. point = [ list(map(int, input().split())) for _ in range(n + 2) ] edges = [[] for _ in range(N + 2)] #adjM = [[0] * (n + 2) for _ in range(n + 2)] for i in range(N + 2): for j in range(N + 2): if i == j: continue if abs(points[i][0] - points[j][0]) + abs(points[i][1] - points[j][1]) 더보기
ARM Product 관련 문서 번역(Cortext-M3) (번역을 시작하게 된 계기) ARM 아키텍쳐는 높은 시장 선점율에도 불구하고, '여러 요소'들로 추상화 되어 있어 이해에 대한 필요성을 느끼기 쉽지 않다. 여러 요소들의 예로는 펌웨어 엔지니어 입장에는 칩 벤더사 SDK가, 어플리케이션 엔지니어 입장에는 리눅스와 같은 OS가 될 수 있다. 그럼에도 불구하고 ARM 아키텍쳐를 익히는 것은 앞으로 사용 할 Soc SDK의 Learning Curve를 줄여준다는 점에서 의미가 있다고 생각한다. (적어도 ARM 아키텍처를 계속 사용하는 한) 목차 Chapter 1 Introduction Chapter 2 The Cortex-M3 Processor Chapter 3 The Cortex-M3 Instruction Set Chapter 4 Cortex-M3 Perip.. 더보기
Pytorch with examples ※ 아래 글은 Pytorch 홈페이지의 pytorch_with_examples를 번역 및 요약한 것입니다. 1. Numpy vs Pytorch 사인함수(sin)를 numpy 와 pytorch를 이용해 Linefitting 하면서 두 프레임 워크를 비교해 본다. 먼저 LineFitting을 위해서 모델링을 먼저 한다. 본 예제에서는 3차원 다항식으로 sin 함수를 Linefitting 을 시도한다. $ y = dx^3 + cx^2 + bx + d $ 2. Numpy 아래는 Numpy로 sin 함수 Linefitting 하기 위한 코드와 결과이다. 아래 그림을 보면, 3차원으로 다항식 가정을 하였고, 추정치가 실제 sin 함수와는 다소 차이를 보인다. 하지만, 계산 그래프를 통해서 계수(coefficient.. 더보기
변하는 것과 변하지 않는 것 변하는 것 : 기술에 의한 결과물 변하지 않는 것 : 고객을 위하는 마음 더보기
1. CUDA Toolkit 설치 및 설치 확인 1) 기존 것 지우기 # 드라이버 삭제 sudo apt remove --purge '^nvidia-.*' # CUDA 삭제 sudo apt remove --purge "*cublas*" "cuda*" "nsight*" # CUDA 파일 삭제 (아래 명령에서 숫자 부분은 본인이 설치된 버전에 맞게 바꿉니다) /usr/local/cuda-9.0/bin/uninstall_cuda_toolkit_9.0.pl rm -rf /usr/local/cuda-10.2/ 2) 적절한 Cuda Toolkit 설치 아래 사이트에서 설치하고자 하는 버전을 설치 합니다. CUDA Toolkit Archive | NVIDIA Developer 3) bashrc 설정 (아래 명령에서 숫자 부분은 본인이 설치된 버전에 맞게 바꿉니다) .. 더보기
Collections utils ▶ Counter - 해시 가능한 객체를 카운팅 하기 위한 dict의 하위 클래스이다. - 리스트를 입력 값으로 넣으면 원소를 Key 값으로, 갯수를 Value 값으로 반환해 준다. import collections class collections.Counter([iterable-or-mapping]) 사용 예시 from collections import Counter myList = ['red', 'blue', 'red', 'green', 'blue', 'blue'] cnt = Counter(myList) print(cnt) ''' Counter({'blue': 3, 'red': 2, 'green': 1}) ''' for item, count in Counter(myList).items(): # cnt.. 더보기
[MIT] 데이터 사이언스 기초 강의 요약[11 ~ 15강] Chapter 11. Introduction to Machine Learning ▶지도 학습(Supervised Learning) - 분류(Classification), 회귀(Regression)가 존재 - 분류 : 라벨을 예측하는 것(이중 분류 or 다중 분류) (e.g. K-NN) - 회귀 : 연속적인 숫자 혹은 부동소수점을 예측하는 것 (e.g. Linear or Polynomial Regression) ※ 회귀는 분류와 다르게 출력 값에 연속성이 있다. ▶비지도 학습(Unsupervised Learning) - 원래 데이터를 보다 쉽게 해석할 수 있도록 만드는 알고리즘 - 비지도 변환(Unsupervised Transformation), 군집(Clustering), 이상 탐지(Anomaly Det.. 더보기
[고찰] Coding Insight ▶ 함수 생성 딜레마 함수에 인자를 추가해서(기능을 더해서) 함수 중복을 피할 건지 아니면, 함수 최소 기능을 놔 둔체 기능이 다른 함수는 새로 만들 건지는 딜레마다. 1) 함수에 기능을 추가할 경우 장점 : 함수에 기능만 추가하면 코드 중복을 막을 수 있다. 단점 : 함수 내에 분기 문이 늘고, 함수가 길어진다. 2) 기능이 일부 다른 함수를 새로 만들 경우 장점 : 코드가 명확해 지고, 상위 스택에서 분기를 나누기가 쉽다. 단점 : 코드가 길어진다. ▶ 타 회사 라이브러리 사용시 (라이브러리 사용법 만들기) 쉽다고 생각할 것이아니라(실제로 쉽지 않다) 사용법이 완전히 숙지 되기 위하여 사용법을 요약한 PPT를 만든다. 사건) 본인은 TC387 라이브러리 사용법을 완전히 숙제하지 못해, 어쩡쩡하게 시간.. 더보기