분류 전체보기 178

Logical Thinking. #2부_3

So What? / Why So? 는 이야기의 비약을 없애는 기술이다. -> 앞에서 오는 정보나 소재에서 과제의 답변에 맞는 중요한 핵심을 추출하는 작업이다. 이때 중요한 것은 물음에 준비한 정보와 자료를 확실하게 설명할 수 있어야 한다는 점이다. 두 종류의 So What? / Why So? 1. 현상이나 사실의 핵심을 정확히 설명하는 '관찰' 2. 현상이나 사실을 근거로 공통 사항 또는 메커니즘을 파악하는 '통찰' 관찰. -> 주어진 자료에서 요점을 추출 비약의 원인은 읽는 사람 모두가 '결론적으로 이 자료에서 무엇을 알 수 있는가' 하는 사실을 똑같이 파악하지는 못하기 때문이다. (각각의 관심사와 익숙한 문맥에 의존해서 문제와 상황을 해석하려고 한다.) => 사실을 올바르게 관찰하고, 상대가 그 관찰..

OS, path, url 모듈

OS 운영체제의 정보를 담고 있음 모듈은 require로 가져옴(내장 모듈이라 경로 대신 이름만 적어줘도 됨) const os = require('os'); console.log(os.cpus()); // 나는 8코어를 사용하고 있어 8개의 결과가 나온다. os.arch(): process.arch와 동일합니다. os.platform(): process.platform과 동일합니다. os.type(): 운영체제의 종류를 보여줍니다. os.uptime(): 운영체제 부팅 이후 흐른 시간(초)을 보여줍니다. process.uptime()은 노드의 실행 시간이었습니다. os.hostname(): 컴퓨터의 이름을 보여줍니다. os.release(): 운영체제의 버전을 보여줍니다. os.homedir(): 홈 디..

Node.js 2020.12.07

NP-Completeness ( P, NP, EXP, NP-completeness )

P 란? Polynomial time 이내에 해결 가능한 알고리즘을 말한다. 즉, 알고리즘의 복잡도가 O(n^x)로 표현되는 모든 문제들을 말한다. 이때, 해결 이란 단어에 대해 자세히 말하고 싶은데, 여기서 말하는 해결이란 어떠한 instance에 대해 동일하게 해답을 내놓을 수 있는 방법을 말한다. Certifiers NP Polynomial time에 답의 존재유무를 확인 할 수 있는 문제를 말한다. NP는 non-deterministic polynomial time의 약자 NP에 속하는 문제들이 다항시간에 해결 가능한지, 불가능한지 모르기 때문이다. 마찬가지로 답을 확인한다는 것에 대해 말하고 싶은데 흔히 결정문제라고도 말한다. 해결 방법은 모르지만 답의 유무는 확인 가능한 문제들의 집합이다. P..

알고리즘 2020.12.07

DP를 사용하는 알고리즘들 #3

Optimal Binary Search Tree Solution 1 : n 개의 key 를 가지는 가능한 모든 BST 를 생성하여, 그 중 total search cost 가 최소인 것을 고르기. - n 개의 node 를 가진 BST 는 대략 O(4n) 개 정도 된다 à exponential time ! Solution 2 : Dynamic programming approach 1.Subproblem 정의 : 임의의 1 ≤ i ≤ j ≤ n 에 대해 C (i, j) 를 전체 key ki, ki+1, …, kj 을 각각 fi, fi+1, …, fj 번 검색한다 할때, optimal BST 의 total search cost 라고 하자. 따라서 C (1, n) 이 우리가 원래 구하고자 하는 optimal B..

알고리즘 2020.12.06

DP를 사용하는 알고리즘들 #2

Shortest Path Problem -벨만 포드 알고리즘 구현 Algorithm outline (negative cycle 이 없다 가정 시) 1.알고리즘은 총 0 ~ n-1 의 stage (iteration) 으로 구성되며, i 번째 stage 가 끝날 때 마다 G 의 모든 vertex v 에 대해 dist (i, v) 가 dist (v) 에 저장된다 (invariant). 2.0 번째 stage 에서는 앞선 base case 에 맞게 dist 값을 정해 준다. 3.이후 i 번째 stage 마다 모든 edge (u, v) 에 대해 다음 작업을 반복한다. à dist (v) > dist(u) + w (u, v) 인 경우 dist (v) 를 dist (u) + w (u, v) 로 update 시간 복잡..

알고리즘 2020.12.06

DP를 사용하는 알고리즘들 #1

Longest Increasing Subsequence Problem : S에서 제일 긴 increasing subsequence 의 길이 구하기. 방법 1. 방법2. Edit Distance Motivation : 어떤 단어와 ‘비슷한 (가까운)’ 단어는 어떻게 정의할 수 있을까? String S1 와 S2 간의 edit distance 는 S1 에서 아래 3가지 type 의 연산을 최소한 몇 번 수행하여 S2 를 만들수 있는가로 정의한다. 1.Insertion (삽입) : S1 에 symbol 하나를 추가 (위치는 무관) ex) MONDT à MONEDT 2.Deletion (제거) : S1 에 symbol 하나를 제거 (위치는 무관) ex) MONEDT à MONED 3.Substitution (교..

알고리즘 2020.12.06

다이나믹 프로그래밍 (DP)

recursive call 의 중간 결과를 저장하는 기법을 memorization (메모이제이션) 이라 하고 recursion 과 memorization 을 사용하여 문제를 해결하는 (알고리즘을 디자인 하는) 기법을 dynamic programming (DP)라고 한다 Dynamic programming = Recursion + Memoization Dynamic programming 으로 문제를 해결하는 방법. 1.문제를 정확하게 정의하기. 2.정의된 문제에 대한 subproblem 을 정의한 뒤 (앞 예시에서는 subproblem = Fn’ (n’ < n) 구하기가 subproblem), subproblem 을 이용한 recurrence relation 을 세우기. 3.Memorization 을 이용..

알고리즘 2020.12.06

노드 내장 알아보기 #2

require require가 제일 위에 올 필요는 없음 require를 한번 부르면 캐쉬 메모리에 올려두고 호출 할때마다 캐쉬 메모리를 확인하는 것임 require.cache : 한 번 require한 모듈에 대한 캐슁 정보가 들어있음. 그것을 보여줌 => 이거를 잘 이용하면 node를 끄지 않아도 실시간으로 코드 수정한 것을 적용시킬 수 있음 require.main : 노드 실행 시 첫 모듈을 가리킴. -> 하지만 import는 제일 위에 있어야함 순환참조 두 개의 모듈이 서로를 require하는 상황을 조심해야 함 Dep1이 dep2를 require하고, dep2가 dep1을 require 함. Dep1의 module.exports가 함수가 아니라 빈 객체가 됨(무한 반복을 막기 위해 의도됨) 순환..

Node.js 2020.12.04

이미지 사이즈 조절 및 이미지 분석 (feat. VGG)

주석을 봐도 모르겠으면 알려주세요 # Day_23_01_17flowers.py # 17flowers_origin import tensorflow as tf import os import glob from PIL import Image from sklearn import preprocessing, model_selection import numpy as np # 이미지를 224 * 224 로 바꿔야함 # 17flowers_origin -> 224로 줄여서 def resize_17flowers(src_folder, dst_folder, new_size): # 폴더 없으면 만들어줌 if not os.path.exists(dst_folder): os.mkdir(dst_folder) files = glob.glo..

인공지능/CNN 2020.12.04

VGG

주석을 봐도 모르겠으면 알려주세요 # Day_22_02_VGG.py import tensorflow as tf def model_vgg_dense(): # slim 라이브러리에 있는 vgg 파일을 활용해서 케라스 vgg 모델을 구현하세요 # 결관 summary 함수를 통해 shape 로 확인합니다. model = tf.keras.Sequential() model.add(tf.keras.layers.Input(shape=[224, 224, 3])) # input 바꾸지 않을 것임 # 1번째 conver 완료 model.add(tf.keras.layers.Conv2D(64, [3, 3], 1, 'same', activation='relu')) model.add(tf.keras.layers.Conv2D(64,..

인공지능/CNN 2020.12.04