전체 글
-
뽐뿌게시판 컴퓨터 카테고리 제목 크롤링해서 자동으로 가져오기기타 2019. 11. 27. 20:23
블프 시즌을 맞아 컴퓨터를 사려고 뽐뿌를 계속 들어가는데, 직접 일일히 확인하기가 너무 귀찮아서 크롤링 프로그램을 간단하게 만들었다. 이왕 만든김에 포스팅 하려고 두 가지 버전으로 만들었다. 1. BeautifulSoup 스크래핑을 하려는 페이지가 간단할 때 쓰면 좋다. html 문서를 들고와서 그 문서를 분석해서 필요한 내용을 찾을 수 있다. from bs4 import BeautifulSoup import requests # 바로 뽐뿌 컴퓨터 게시판으로 접속한다 r = requests.get('http://www.ppomppu.co.kr/zboard/zboard.php?id=ppomppu&category=4') if r.status_code == 200: # html을 들고와서 bs = Beautif..
-
A Gift from Knowledge Distillation: Fast Optimization, Network Minimization and Transfer Learningpaper review 2019. 11. 18. 19:16
논문을 review하기 전에 Knowledge Distillation의 시초가 되는 논문을 먼저 간단히 소개하고자 합니다. Knowledge Distillation 개념은 Teacher Network의 성능을 작은 Student Network에 담기위해 고안됐습니다. 처음 논문은 Teacher Network의 softmax 결과를 "soft label"로 정의하고, Student Network가 원래의 hard label과 soft label을 모두 학습하는 방식을 제안했습니다. 이번에 review하는 논문은 처음 논문과 최신 논문의 중간 단계입니다. 본 논문에서는 좀 더 효과적인 Knowledge Distillation 방법론을 제안합니다. 본 방법의 장점은 아래와 같다고 합니다. Optimized를 ..
-
[tensorflow 2.0] input 값에 따라 masking 하기카테고리 없음 2019. 11. 14. 21:33
input 값에 0이 있으면, 해당 데이터를 False로 masking하는 코드입니다. 출처 class CustomEmbedding(tf.keras.layers.Layer): def __init__(self, input_dim, output_dim, mask_zero=False, **kwargs): super(CustomEmbedding, self).__init__(**kwargs) self.input_dim = input_dim self.output_dim = output_dim self.mask_zero = mask_zero def build(self, input_shape): self.embeddings = self.add_weight( shape=(self.input_dim, self.output..
-
[tensorflow 2.0] tf.tile데이터분석 2019. 11. 14. 21:12
tf.tile은 raw 데이터의 특정 차원을 원래의 값으로 복사할 때 사용합니다. tf.tile( input, multiples, name=None ) 간단한 예시를 보면 이해가 더욱 쉽다. # 1차원 예시 A = ['a','b','c'] tf.tile(A, [2]).numpy() # array([b'a', b'b', b'c', b'a', b'b', b'c'], dtype=object) # 2차원 예시 B = tf.random.normal((2,2)) tf.tile(B,[1,3]) #
-
Spectral Metric for Dataset Complexity Assessmentpaper review 2019. 11. 11. 20:25
1. Introduction 보통 데이터분석가들은 새로운 Image dataset을 만났을 때, 이게 얼마나 어려운 문제인지 파악하고 싶어합니다. 어떤 클래스가 가장 분류하기 힘든지? CNN 학습을 위해 필요한 최소의 data size는 무엇인지? 그러나 그런 측정이 가능한 표준 framework가 아직은 없습니다. 그래서 현재는 여러가지 CNN 모형들을 만들고, 학습한 뒤, test set에서의 결과들을 비교해서 그러한 정보들을 얻어냅니다. 그러나 이 방법은 두 가지 문제점이 있습니다. 시간이 너무 많이 소요되고, fully-annotated dataset이 필요합니다. 그래서 classification problem의 complexity를 측정하기 위해, dataset 단계에서 난이도를 평가할 수 있..
-
[Tensorflow 2.0] custom gradient 함수로 reverse gradient 구현하기데이터분석 2019. 11. 7. 20:15
Adversarial Network를 학습하기 위해서는 gradient를 반전해야 할 때가 있다. 그런 경우 Tensorflow 2.x에서는 custom gradient 함수를 정의하여 구현할 수 있다. 일단 공식 가이드의 custom gradient 예시를 보자. # custom gradient sample @tf.custom_gradient def log1pexp(x): e = tf.exp(x) def grad(dy): return dy * (1 - 1 / (1 + e)) return tf.math.log(1 + e), grad 먼저 @tf.custom_gradient 데코레이터를 사용한다. 그리고 정의하는 함수 내부에서 input 처리 및 gradient를 return하는 함수를 정의해서 다시 반환..
-
[tensorflow 2.0] tf.slice데이터분석 2019. 11. 1. 22:50
tf.slice( input_, begin, size, name=None ) tf.slice는 python list slice의 함수 형태로 이해하면 된다. input_: 원본 input tensor begin: 시작 위치 size: 잘라낼 size (shape) # 예제 tensor t = tf.constant([[[1, 1, 1], [2, 2, 2]], [[3, 3, 3], [4, 4, 4]], [[5, 5, 5], [6, 6, 6]]]) # 원본 t에서 시작위치 [1, 0, 0]은 [3, 3, 3] 리스트의 맨 앞 [3] 이다. # 시작 위치에서 [1, 1, 3] shape으로 내용물을 꺼내오면, # 총 1*1*3 개의 원소가 차례대로 선택되고 # 그 결과는 [[[3, 3, 3]]] 이 된다. tf..
-
[책] 실전 예제로 배우는 GAN카테고리 없음 2019. 11. 1. 21:58
실전 예제로 배우는 GAN 국내도서 저자 : 조시 칼린(Josh Kalin) / 박진수역 출판 : 위키북스 2019.07.24 상세보기 굳이 악평을 남겨서 무엇 하겠냐만은, "나만 당할 수 없지" 심보가 나와는 맞지 않는 탓에 리뷰를 남긴다. 일단 번역부터가 너무 읽기 힘들다. 번역된 단어도 업계 사람들이 읽기에 너무 거슬린다. 그리고 코드 오타도 많고, 나도 고수는 아니지만 PEP8 띄어쓰기를 무시한 코드도 너무 거슬린다.. 또, 전체 책 분량도 약 200페이지 정도 밖에 안되면서 중복되는 내용도 매우 많다. 즉 핵심적으로 얻어갈 수 있는 컨텐츠가 적다는 것이다. 할말이 조금 더 있지만.. 이정도면 충분히 느낌 전달이 됐을 것이라 생각한다.