분류 전체보기 367

14. Asynchronous & Promise - Promise& Async/Await

+ Promise& Async/Awai t에 대해 공부한 것을 정리한 것입니다. 배우는 중이라 잘못된 내용이 있을 수 있으며 계속해서 보완해 나갈 것입니다. :)) 이전 포스트에서 '비동기 처리 로직을 위해 콜백함수를 연속해서 사용할 때 발생하는 콜백지옥'을 마지막으로 정리해보았다. 콜백 지옥을 해결하기 위해서는 Promise & Async/Await 방식을 사용할 수 있다. 1. Promise 1) Promise란 비동기 처리에 사용할 수 있는 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체이다. 2) Promise의 필요성 1. callback을 이용한 비동기 함수의 전달 방법 3초 후에 실행되는 어떤 코드를 작성해야한다고 할 때, promise를 사용하지 않았을 때와 사용했을 때의 코드를 비..

Dev/SW Engineering 2020.07.21

13. Asynchronous & Promise - Asynchronous JS & Callback

+ Asynchronous JS & Callback 에 대해 공부한 것을 정리한 것입니다. 배우는 중이라 잘못된 내용이 있을 수 있으며 계속해서 보완해 나갈 것입니다. :)) 1. Asynchronous(비동기) Javascript 1) Asynchronous(비동기)란 무언인가 joshua1988.github.io/web-development/javascript/javascript-asynchronous-operation/ 이 글에서 에서 너무 설명을 잘 해주셨다. 식당을 예약한다고 할때, ① 동기적 방식으로 한다면 이런 식으로 진행된다. 원하는 동작(여기선 자리에 앉는다.에 해당)을 하기 위해서 손님은 '근처 가게에서 잠깐 쇼핑을 하지도, 다른 식당을 알아보지도 못하고' 예약한 식당에서 한없이 기다리..

Dev/SW Engineering 2020.07.21

딥러닝 환경설정 관련 우분투 명령어

1. nvidia Driver, CUDA, cuDNN 설치 전 설치유무 확인 명령어 nvidia-smi nvcc -V cat /usr/local/cuda/include/cudnn.h | grep MAJOR -A 2 cat /usr/include/nccl.h | grep MAJOR -A 2 whereis [file name] watch -n 1 -d nvidia-smi 2. pytorch, tensorflow 설치 및 conda 가상환경 생성 명령어 conda install jupyter notebook conda install pytorch torchvision conda create -n [virtual environment name] conda install tensorflow-gpu==1.13.1 ..

pytorch) 합성곱 신경망

합성곱 신경망이란? 뉴런이 모여 서로 연결된 형태인 인공신경망을 알아보았고 구현을 해 보았습니다. 그러나 이미지 데이터의 경우 해당 모델의 성능이 좋지 않습니다. 그 이유는 1. 이미지는 하나의 숫자가 아닌 공간적 특성(weight x height x channel)이 있고, 2. 예외적 모양(예를 들어 그냥 X와 기울어진 X)이 들어올 때 마다 인공 신경망은 전혀 다른 값으로 인식하여 가중치들을 다시 학습시켜야합니다. 이미지의 크기가 커질수록 이런 변형의 가능성은 더 커집니다. 그래서 동물의 시각 뉴런에 대한 연구로부터 얻은 개념을 바탕으로 1980년대 네오코그니트론을 거쳐 Yann LeCun 교수의 합성곱 신경망(CNN)이 개발되었습니다. 그래서 합성곱 연산에서는 filter로 이미지를 슬라이드하면서..

12. Sprint 1/4 Assessment - 중간 점검

문제1. 다음의 코드를 실행시킨 후에 result값은 무엇인가? 답1. 10 line 1의 var x= 10과 line 3의 var x = 20의 x는 서로 다른 x로, line 3의 x는 outer 함수의 scope내에서만 유효한 x이기때문이다. 그래서 line 13의 x는 line 1의 x이다. 문제2. 다음의 코드를 실행시킨 후에 result값은 무엇인가? 답2. 30 get함수 내의 x는 새로 선언된 것이 아니므로 global value이다. 따라서 get(20)의 20은 아무 영향도 미치지 못하며 global x의 값인 30이 반환된다. 문제3. 다음 코드를 실행시키면 콘솔에 찍히는 것은? 답3. Window or the global object fn은 obj의 메소드가 아닌 독립적인 함수 fu..

Dev/SW Engineering 2020.06.14

11. Algorithms - Advanced Brute Force

Brute-Force Algorithms이란, 완전 탐색 알고리즘으로 모든 경우를 시도해봄으로써 답을 구한는 알고리즘이다. 완전 탐색을 하기에 간단한 경우는 모든 경우를 얼마나 돌아야 하는지 알고 있을 때이다. 1. 예를 들어, N개의 숫자 중에서 최소값을 구하라 는 문제가 있고, N가 N개의 숫자가 입력으로 주어진다면 mini = arr[0] for(let i=0; i arr[i]){ mini = arr[i]; } } 로 단순히 하나하나 모든 숫자를 비교할 수 있을 것이다. 그러나 이런 경우가 아닌 문제가 까다로운 것이다. 2. 예를 들어, N개의 알파벳 중에서 r개를 나열할 수 있는 경우를 모두 출력하시오 와 같은 문제라면, r이 달라짐에 따라서 반복문을 써야 하는 횟수도 r 번으로 달라진다. 이처럼..

Dev/SW Engineering 2020.06.11

10. Algorithms - Recursive Function

재귀함수(Recursive Function)란 자기 자신을 부르는 함수이다. 재귀함수의 의미는 무엇인가 재귀함수는 귀납적 계산 방법(귀납적 문제해결 방법)이라고 할 수 있다. 계산 방법에는 순차적 계산 방법과 귀납적 계산 방법 이라는 두 가지 방식이 있다. 먼저 순차적 계산 방법은 1. A를 계산한다. 2. A를 이용해서 B를 계산한다. 3. B를 이용해서 C를 계산한다 4. C를 이용해서 D를 계산함으로써 원하는 결과를 얻는다. 와 같이 순차적으로 진행하는 계산 방식이다. 예를 들어 n! = n x (n-1) x(n-2) ... x 2x1 과 같이 Factorial을 계산 하는 방법을 일컫는다. 두번째는 귀납적 계산 방식이다. 이는 1. 구하려고 하는 값을 f(x)라고 한다. 2. 그러면 f(x)를 구..

Dev/SW Engineering 2020.06.11

9. Inheritance Patterns - Pseudoclassical Inheritance

상속이란 상속(Inheritance)는 부모(Basic class)의 속성을 물려받는 것을 말합니다. 상속의 필요성 상속을 통해서 중복되는 코드를 부모코드가 제공하고 자식코드는 제공받습니다. 이를 통해 코드의 양도 줄이면서 부모 코드에 해당하는 부분이 수정되어야 하는 경우, 자식 코든는 하나씩 변경할 필요없이 동시에 변경이 되므로 유지, 보수에 편리합니다. 상속 방법 1) class를 통해서 상속하는 방법 주요 객체지향언어는 subclass가 superclass의 자식이 되고, 그렇게 자식이 된 subclass에서 객체(object)를 만들어낸다. 그림으로 나타내면, 이런 방식을 통해서 생성된 객체의 성질은 class로부터 이미 정해져 있습니다. 2) 객체를 통해서 상속하는 방식 JavaScript는 객..

Dev/SW Engineering 2020.06.11

8. Inheritance Patterns - Subclassing, Prototype chain

JavaScript는 객체가 직접 다른 객체를 상속받을 수 있고 얼마든지 prototype link를 통해서 상속 받을 부모 객체를 다른 객체로 바꿀 수 있습니다. 이처럼 JavaScript는 Prototype기능을 활용해서 OOP기능을 지원하려했으며, ES6에서 Class문법을 볼 수 있지만 이는 Class개념을 흉내낸 것 JavaScript가 Class 기반 언어처럼 작동하게 바뀌었다는 것은 아닙니다. Prototype Link와 Prototype Object 앞에서 JavaScript는 Prototype을 기반으로 OOP을 흉내 내도록 구현해서 사용한다고 하였고, 그림을 통해서 잠깐 Prototype Object와 Prototype link에 대한 언급을 하였습니다. Prototype Object와..

Dev/SW Engineering 2020.05.30

pytorch) 선형회귀분석

선형회귀분석이란? 주어진 데이터를 가장 잘 설명하는 직선 하나를 찾는 것, 즉 x와 y라는 데이터가 주어졌을 때 이 데이터의 관계를 가장 잘 나타내는 y = wx+b라는 직선의 방정식을 찾는 것입니다. 가장 잘 설명한다? 어떤 직선의 방정식이 얼마나 잘 설명하는냐를 평가하는 척도로 사용하는 것으로 평균제곱오차(Mean Squared Error; MSE)가 있습니다. MSE는 w와 b 중 w에 대한 오차를 나타낸 것으로 이를 L2 loss function이라고도 합니다. 그렇다면 최적의 w를 찾아나가는 과정은? 대부분의 딥러닝 모델에서는 경사하강법을 사용한다. 아래에 경사하강 학습법에 대해 정리해 놓은 것을 참고할 수 있으며, 간단히 말하면 지속적으로 w를 업데이트함으로써 오차의 극소값을 찾는다는 것입니다..