snowstormaw의 등록된 링크

 snowstormaw로 등록된 네이버 블로그 포스트 수는 49건입니다.

[딥러닝] LSTM으로 주가 예측하기 (feat. 삼성전자) [내부링크]

딥러닝을 배우면 누구나(?) 주가 예측 프로그램을 만들어 보고 싶어 한다. RNN의 일종인 LSTM과 GRU를 이용하여 간단한 주가 예측 프로그램을 만들어 보았다. 정교한 예측을 위한 프로그램이라기 보다는 데이터 수집 → 전처리 → 모델 구성 및 학습의 기본을 설명하기 위한 프로그램이다. 설명 순서는 다음과 같다. 데이터 수집: 파이낸스 데이터 리더 (FinanceDataReader) 데이터 전처리 모델 구성, 학습 개선하려면 참고: 파이낸스 데이터 리더와 네이버 금융 비교 데이터 수집: 파이낸스 데이터 리더 (FinanceDataReader) <파이낸스 데이터 리더(finance data reader)>를 사용하면 크롤링을 하지 않고도 주가 데이터를 쉽게 얻을 수 있다. 파이낸스 데이터 리더는 스스로를 '한국 주식 가격, 미국주식 가격, 지수, 환율, 암호화폐 가격, 종목 리스팅 등 금융 데이터 수집 라이브러리'라고 소개하는데, 주식에 대해서는 시가, 고가, 저가, 종가, 거래량

[딥러닝을 위한 파이썬] concat으로 데이터 프레임 합치기 [내부링크]

판다스의 concat( )은 데이터 프레임을 합치는 가장 단순한 방법이다. merge( )나 join( )이 기준 열(key)을 잡아 값을 비교해 가며 합치는 것에 비해 블록을 붙이듯이 단순하게 합친다. concat( )의 사용법을 다음의 순서로 설명한다. merge( )에 대해서는 별도의 포스팅에서 소개하겠다. 인덱스가 없는 데이터 프레임 합치기: inner / outer * axis 0 / axis 1 인덱스가 있는 데이터 프레임 합치기 ignore_index로 인덱스 새로 매기기 첨부: 추가 연습 인덱스가 없는 데이터 프레임 합치기 온라인 과일 쇼핑몰에서 오더를 처리하는 예를 들어보자. 제품 목록이 담긴 데이터 프레임 'goods'가 있고, 오더 받은 내역이 담긴 데이터 프레임 'order'가 있다. 양쪽에는 똑같이 'product'라는 열이 있다. 이 두 데이터 프레임을 합쳐서 오더를 처리하려고 한다. import pandas as pd goods = pd.DataFrame(

[딥러닝을 위한 파이썬] 데이터 프레임 만들고 검색하기 [내부링크]

판다스(Pandas)와 넘파이(numpy)는 딥러닝 데이터를 전처리 하기 위해 가장 많이 사용되는 두 라이브러리다. 판다스 데이터 프레임(DataFrame)은 판다스 그 자체라고 할 수 있을 정도로 판다스의 주된 데이터 구조다. 데이터 프레임을 만들고, 검색 / 수정 / 삭제하는 4가지 기본 기능을 2회에 걸쳐 연재한다. 이번 포스팅은 데이터 프레임 만들고 검색하기로서 다음 순서로 설명한다. 데이터 프레임 각 부분의 이름 데이터 프레임 만들기 · 리스트로 만들기 · 딕셔너리로 만들기 · 엑셀에서 csv 파일로 만들어 읽어오기 데이터 프레임 검색하기 · 속성(attribute) 보기 · loc( ), iloc( )로 검색하기 · 열 이름으로 검색하기 · 조건 검색 · 인덱스를 검색하기 데이터 프레임 각 부분의 이름 데이터 프레임을 만들기 전에 각 부분의 이름을 알아보자. 'columns'는 열 이름, 'index'는 행 이름, 'values'는 데이터에 해당한다. 데이터 프레임 만들기

[딥러닝을 위한 파이썬] 딕셔너리 컴프리헨션 [내부링크]

컴프리헨션을 쓰면 for 문의 코드를 단 한 줄로 쓸 수 있다. 이때 컴프리헨션으로 만든 결과물이 리스트면 리스트 컴프리헨션, 딕셔너리면 딕셔너리 컴프리헨션...이라 부른다. 이번 포스팅에서는 파이썬의 딕셔너리 컴프리헨션에 대해 설명한다. 설명 순서는 다음과 같다. 기본 사용법 리스트 각 요소가 몇 번씩 나왔는지(출현 빈도) 세어보기 기본 사용법 지난 포스팅에서 살펴본, 키(key)와 값(value)의 위치를 바꾸는 코드를 잠깐 다시 보자. 데이터는 다른 것을 사용한다. 한국인들이 좋아하는 반려견 품종별 비율인데, '참지 않긔'의 말티즈가 23.7%로 1위를 차지하며 가장 사랑받고 있다 (출처: 「2021 한국 반려동물 보고서」, KB금융지주). dogs = dict(말티즈 = 23.7, 푸들 = 19.0, 포메라니안 = 11.0, 믹스견 = 10.7, 치와와 = 10.1) print(dogs) → {'말티즈': 23.7, '푸들': 19.0, '포메라니안': 11.0, '믹스견':

[딥러닝을 위한 파이썬] 딕셔너리 정렬하기 [내부링크]

파이썬 딕셔너리를 키(key) 또는 값(value)으로 정렬하는 방법을 소개하고, 이를 응용하는 문제를 2개 풀어본다. 이번 연재까지 잘 소화하시면 딕셔너리로 어떤 작업을 하더라도 큰 어려움이 없으실 것이다. 설명 순서는 다음과 같다. 키(key)로 정렬하기 값(value)으로 정렬하기 [응용문제 1] 딕셔너리를 값(value) 기준으로 순서 매겨 정렬하기 [응용문제 2] 단어를 숫자로 바꾸는데, 많이 나오지 않은 단어는 1로 바꾸기 키(key)로 정렬하기 파이썬 딕셔너리를 키(key)로 정렬하기는 어렵지 않다. 딕셔너리의 items( )를 뽑아내어 sorted( ) 함수로 정렬한다. sort( ) 함수는 원본은 그대로 둔 채 키 기준으로 정렬된 새로운 리스트를 만드는데, 원본이 어떤 iterable이든 관계없이 사용할 수 있다. (iterable: 내부 요소들을 하나씩 꺼낼 수 있는 객체. 예를 들어 리스트, 튜플, 딕셔너리, 세트, 문자열 등). 아래 예는 5명이 100 미터 달

[딥러닝을 위한 파이썬] 딕셔너리 값으로 키 찾기 [내부링크]

파이썬 딕셔너리 연재 마지막 글이다. 특정 값(value)을 갖는 키(key)를 찾는 방법을 소개한다. 중복되는 값(value)이 존재하지 않을 때 사용할 수 있는 방법은 여러 가지지만, 중복되는 값이 존재할 때는 정확한 방법을 사용해야 해당 키를 모두 찾을 수 있다. 설명 순서는 다음과 같다. 연재 마지막 포스팅이라 깊이 들어가지는 않으니 마음 편하게 읽어주셔도 되겠다. 특정 값(value)을 갖는 키(key) 찾기 가장 큰 값(value)을 갖는 키(key) 찾기 특정 값(value)을 갖는 키(key) 찾기 우리나라에서 월별로 피는 꽃 몇 가지를 딕셔너리로 정리했다. '장미'는 일부러 5월과 6월에 모두 넣어 두었다. bloom = {'1월':'수선화', '3월':'프리지아', '4월':'라일락', '5월':'장미', '6월':'장미', '7월':'무궁화', '11월':'국화'} print(bloom) → {'1월': '수선화', '3월': '프리지아', '4월': '라일락',

오래 전에 들은 이야기 하나 돌려 드립니다 [내부링크]

삶의 중심을 잡아주는 이야기들이 있지요. 오래 전에 직장 상사에게 들은 이야기 하나 전해 드립니다. “커서 외지에 나가 사는 아들이 있었다. 일년에 한두 번 부모 집에 찾아왔고, 오면 집 근처에서 낚시를 하곤 했다. 아들이 온다는 연락을 받으면, 아버지는 며칠 전부터 아들이 와서 낚시할 자리에 가서 물에 물고기 먹이를 뿌렸다. 아들이 낚시할 때 고기가 잘 잡히게 하려고. 그러고는 아들에게는 짐짓 아무 말도 하지 않았다.” 약간은 옛날 아버지 상이긴 하죠? 하지만 그 마음 씀씀이만은 기억할 만합니다. <작가chiplanay, 출처 pixabay.com>

[딥러닝을 위한 파이썬] 정렬 함수 sorted( )와 sort( ) [내부링크]

파이썬의 sorted( )와 sort( ) 함수는 모두 정렬에 쓰인다. 하지만 이 둘은 쓰임새에 차이가 있는데, sorted( )는 어떤 컨테이너(container)든 정렬할 수 있고, 원본을 그대로 둔 채 새로운 리스트를 만든다. 반면, sort( )는 리스트만 정렬할 수 있고, 원본 자체를 바꾼다. 딥러닝에서는 sorted( )를 쓰는 경우가 훨씬 많다. 이 글의 설명 순서는 다음과 같다. 포용적인 sorted() 리스트에만 쓰는 sort() 공통점 심화: 정렬의 순서 포용적인 sorted( ) sorted( )는 모든 걸 다 정렬할 수 있다. '컨테이너(container)', 즉 리스트, 튜플, 세트, 딕셔너리, 문자열 등을 인자로 받아서 리스트로 변환한 뒤 요소(element)를 정렬하여 반환한다. 원래 순서가 있는 리스트나 튜플은 그렇다 쳐도, 순서가 없는 세트와 딕셔너리도 정렬할 수 있다? 그렇다. 모두 리스트로 바꾸어 정렬하기 때문에 가능하다. 먼저 리스트를 sorted

tensor, dimension, rank, vector, matrix [내부링크]

'텐서플로우(tensorflow)'에서 '텐서'는 뭘까? 텐서(tensor) 및 그와 관련된 개념들을 정리한다. 프랑소와 숄레의 책 「 Deep Learning with Python, 2nd edition」 *에서 영어로 설명한 내용을 위주로 한다. (* 이 책의 1권이 국내에서 「케라스 창시자에게 배우는 딥러닝」이라는 제목으로 출판된 적이 있다) 텐서의 예시 텐서(tensor)는 숫자를 담는 그릇(a container for numbers)이다. 텐서의 차원(dimension)별로 예를 들면 다음과 같다. 0차원 텐서(0D tensors) np.array(12) 1차원 텐서(1D tensors) np.array([12, 3, 6, 14, 7]) 2차원 텐서(2D tensors) np.array([[5, 78, 2, 34, 0], [6, 79, 3, 35, 1], [7, 80, 4, 36, 2]]) 3차원 텐서(3D tensors)..... 차원별 텐서 0. 스칼라(scalar

블록체인 기본원리 간략 설명 2 - 이더리움 중심 [내부링크]

지난 포스팅에서 비트코인 중심으로 블록체인의 기본원리를 설명 드린 데 이어, 이번 포스팅에서는 이더리움에 대해 설명 드립니다. 다만, 이더리움을 이해하기 위해서는 비트코인에 대해 추가로 알아야 하는 부분이 있어서 앞쪽에서는 비트코인을 더 설명합니다. 블록체인은 각 개인의 서버에 거래(송금과 수금) 기록을 보관하여 관리하고, 이 서버들이 모여 네트워크를 이루는데, 이 개별 서버를 노드(node)라고 부릅니다. 이들이 블록체인을 구성하기 때문에 참여자라 부르기도 합니다. 이들은 비트코인 계좌인 지갑을 갖고 채굴에 참여하고, 거래와 블록을 검증하여 이웃 노드들에게 전파합니다. 모든 노드가 이런 기능들의 전부를 수행하는 것은 아니며, 어떤 노드들은 위 기능들 중 일부만 수행합니다. 블록체인 노드들 (이미지 출처 https://academy.moralis.io) 아시다시피 비트코인은 실물이 없습니다. 그럼 비트코인은 어떻게 생겨날까요? 블록을 생성한 노드에게는 보상으로 일정액의 비트코인이 지

[딥러닝을 위한 파이썬] 숫자 리스트를 파일로 저장하고 읽기(feat.mnist) [내부링크]

숫자들로 이루어진 리스트를 파일로 저장했다가 다시 읽어오는 방법을 소개한다. 먼저 2개 차원과 3개 차원의 간단한 리스트로 설명하고, 그다음에 mnist의 손글씨 숫자 데이터에 응용한다. 알고 나면 간단하지만 맨땅에서 만들려면 약간의 시행착오가 필수다. 설명 순서는 다음과 같다. 2개 차원 숫자 리스트: 저장하고 읽기 3개 차원 숫자 리스트: 저장하고 읽기 [참고] np.savetxt( ), loadtxt( )를 쓰지 않으면 [심화 1] mnist 소개 및 데이터 준비 [심화 2] mnist 숫자 여러 개: 저장하고 읽기 2개 차원 숫자 리스트: 저장하고 읽기 2개 차원을 갖는 (3, 4) 모양의 넘파이 배열(= ndarray)을 만든다. import numpy as np a = np.arange(12).reshape((3, 4)) a → array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) 이를 넘파이의 savetxt( ) 함수를 이용하

[딥러닝을 위한 파이썬] 문자와 숫자 요소가 섞인 리스트를 파일 저장하고 읽기 [내부링크]

문자열 요소도 있고, 숫자 요소도 있는 리스트를 파이썬에서 파일로 저장하고 읽는 방법을 소개한다. 데이터를 파일로 저장하고 읽는 방법은 여러가지가 있는데, 데이터가 어떤 유형인지에 따라 최적의 방법이 다르다. 대표적으로는 다음과 같은 것들이 있다. 저장할 데이터 사용하는 방법 참고 텍스트 문장 with 문 기존 포스팅 숫자로 된 리스트 np.savetxt( ), np.loadtxt( ) 기존 포스팅 문자열과 숫자가 섞인 리스트 csv.writer( ), csv.reader( ) 이번 포스팅 딕셔너리 json 다음 포스팅 아래처럼 표의 형식을 갖추고, 문자열 요소와 숫자 요소가 모두 있는 리스트를 파일로 저장해 보자. berry weight price strawberry 600 18000 blueberry 200 9000 먼저 csv 라이브러리를 import 하고, berries라는 리스트를 만든다. import csv berries = [['berry', 'weight', 'pric

[딥러닝을 위한 파이썬] assert 문으로 확인하고 넘어가기 [내부링크]

assert 문은 데이터나 변수값이 제대로 되어 있는지 확인하고 넘어가기 위해 사용한다. 이렇게 하면 이후의 코드에서 실행 에러가 발생하더라도 이 데이터/변수값은 확인할 필요가 없기 때문에 디버깅(debugging) 범위를 좁힐 수 있다. 이 글은 다음과 같이 구성되어 있다. assert 문 설명 딥러닝 활용 사례 1 딥러닝 활용 사례 2 assert 문 설명 영어사전에서 assert를 찾아보면 '주장하다, 단언하다'의 뜻을 갖고 있으나, assert 문에서 쓰일 때는 '확인하다(make sure) 또는 점검하다' 정도의 의미가 더 맞아 보인다. assert 문은 다음 형식으로 사용한다. 위에서 표현식(expression) 자리에는 참(True)임을 확인하고 싶은 수식이나 객체를 넣는다. 이 표현식의 값이 거짓(False)일 때는 AssertionError가 발생하는데, 이때 화면에 보여줄 메시지를 assertion_message로 미리 정해 놓을 수도 있다. 아래는 이렇게 메시지를

[딥러닝을 위한 파이썬] 딕셔너리 만들기, 검색, 수정, 삭제 [내부링크]

딥러닝을 잘 배우려면 딕셔너리를 자유자재로 다룰 수 있어야 한다. 딥러닝, 특히 자연어 처리 분야에서 딕셔너리를 현란한 기술로 많이 사용하기 때문이다. 딕셔너리의 기초부터 중급 사용법까지 5회에 걸쳐 연재 포스팅한다. 좀 많다고 느끼실 수도 있지만, 그만큼 중요하다. 연재의 순서는 다음과 같다. [1회] 기초 사용법: 생성, 검색, 수정, 삭제 [2회] 기본 사용법: dict.keys( ), values( ), items( ) [3회] 자유자재로 다루기 1: 딕셔너리 컴프리헨션 [4회] 자유자재로 다루기 2: 딕셔너리 정렬 [5회] 자유자재로 다루기 3: 딕셔너리 value로 key 찾기 오늘 포스팅은 딕셔너리를 만들고, 검색, 수정, 삭제하는 기초적인 내용을 다룬다. 딕셔너리 만들기 딕셔너리 검색 딕셔너리 추가/수정, 삭제 [심화 1] 딕셔너리의 순서 [심화 2] 세트(set)와의 비교 딕셔너리 만들기 딕셔너리를 만드는 방법은 여러 가지가 있는데, 여기서는 세 가지만 소개한다. 하

[딥러닝을 위한 파이썬] 딕셔너리 keys( ), values( ), items( ) [내부링크]

파이썬 딕셔너리의 키들만 뽑아낼 수 있다. 값들만 뽑아낼 수도 있고, 키와 값을 함께 뽑아낼 수도 있다. 키와 값을 뽑아서는 키와 값의 위치를 바꾸어 새로운 딕셔너리로 만들 수도 있다. 이때 주의할 점이 있는데, 그와 함께 해결책도 알아본다. 설명 순서는 다음과 같다. 딕셔너리 메소드: keys( ), values( ), items( ) 키(key)와 값(value)의 위치 바꾸기 keys( ), values( ), items( ) 아래는 1998년 US 여자오픈의 최종일 라운드 후 점수다. 박세리와 츄아시리폰이 동점이라 이후 두 선수가 연장전에 들어갔고, 박세리가 연못에 들어가 뽀얀 발을 드러내고 샷을 하는 간절함을 보여준 뒤 우승하여 레전드가 되었다. scores = dict(pak = 6, chuasiriporn = 6, neumann = 7) print(scores) → {'pak': 6, 'chuasiriporn': 6, 'neumann': 7} 여기서 선수 3명의 이름만

[딥러닝을 위한 파이썬] ndarray의 데이터 타입 [내부링크]

np.array( ) 함수로 ndarray를 만들 때, 데이터 타입을 지정할 수 있다. 인자로 dtype을 넣어주면 된다. ndarray가 만들어진 이후에 데이터 타입을 변경하려면 astype( ) 함수를 사용한다. 이번 포스팅에서는 이와 같은 ndarray의 데이터 타입에 대해 설명하는데, 순서는 다음과 같다. ndarray를 만들면서 데이터 타입 지정하기: dtype 인자 ndarray의 데이터 타입: uint8 등 데이터 타입 바꾸기: astype( ), np.cast 나도 모르게 데이터 타입이 바뀐다? ndarray를 만들면서 데이터 타입 지정하기 정수형 ndarray를 만들어 보자. 인자에 dtype='int'라 입력한다. a = np.array([1, 2, 3], dtype='int') print(a.dtype) → int64 실수형 ndarray를 만들려면 인자에 dtype='float'을 입력하고, 문자열 ndarray을 만들려면 dtype='str'을 입력한다. a

[딥러닝을 위한 파이썬] 마무리 잘하는 with문 [내부링크]

with문은 코드가 간결하면서도 뒷마무리를 깔끔하게 잘한다는 특성 때문에 딥러닝에서 종종 쓰인다. with문을 쓰는 가장 이해하기 쉬운 예가 파일을 열 때인데, with문을 써서 파일을 열면 작업이 끝난 후 따로 파일을 닫지 않아도 알아서 닫는다. 심지어는 파일을 열어둔 상태에서 예외(exception: 에러의 한 종류)가 발생해도 파일을 닫는다. 이번 포스팅에서는 with문에 대해 전반적인 사항을 설명하겠다. 순서는 다음과 같다. with문으로 파일 여닫기 with문을 쓰는 이유와 형식 with문으로 파일 압축 풀기 with문으로 tf.Session( ) 여닫기 [심화 1] 파일이 열리고 닫힌 상태 확인하기 [심화 2] with문을 쓰는 다른 경우 with문으로 파일 여닫기 아래와 같이 변수에 문장이 담겨 있을 때, 이를 파일로 저장했다가 다시 읽어들이는 예를 들겠다. a = '6월. 여름 시작이다.' print(a) → 6월. 여름 시작이다. with문을 이용하여 'june.tx

블록체인 기본원리 간략 설명 - 비트코인 중심 [내부링크]

사이버 대학교에서 한 학기 동안 블록체인 강의를 들었습니다. 그 내용의 핵심만 뽑아서 블록체인의 기술적인 원리를 설명 드리겠습니다. 이번 포스팅은 비트코인 중심이고, 이더리움과 NFT에 대해서는 이어지는 포스팅에서 다룰 예정입니다. 블록(block)은 1MB 크기의 데이터 덩어리입니다. A가 B에게 비트코인 얼마를 지급한다는, 비트코인 거래(‘트랜잭션’) 정보가 1,800~4,200건이 담겨있습니다. 블록은 헤더(header)와 바디(body)로 구성됩니다(아래 그림 참조). 블록 바디는 방금 언급한 거래 정보를 건건이 담고 있습니다. 블록 헤더는 해당 블록 직전에 생성된 블록에 대한 정보를 물고 있습니다. 블록 헤더에는 그 밖에도 자기 블록에 대한 정보도 담겨 있는데, 다음과 같은 것들입니다 : 거래내역의 머클루트(거래내역 모두를 합쳐서 아주 짧은 해시(hash: 뒤에서 설명함)값으로 만들어서 추후에 거래내역들과 쪼개진 거울조각을 맞추듯 짝을 맞춰 진위를 확인할 수 있는 것), 타

[딥러닝을 위한 파이썬] 텍스트 파일 읽고 쓰기 [내부링크]

작업을 하다보면 변수에 담긴 텍스트를 파일로 저장하고, 텍스트로 된 요소들을 갖고 있는 리스트를 파일로 저장하고 싶을 때가 있다. 그럴 때는 어떻게 하는지, with 문을 써서 설명한다. 함수는 open( ), read( ), readline( ), readlines( ), write( ), writelines( )를 사용한다. 설명 순서는 다음과 같다. 파일 여닫기: open( ), close( ) 변수에 들어 있는 문장을 저장하고 읽어오기: write( ), read( ) 리스트를 저장하고 읽어오기 ① write( .join( ))와 read( ).splitlines( ) ② 이렇게 하면 안 된다... [참고 1] 파일을 한 줄씩 읽어오기 [참고 2] 파일 경로 쓰는 방법 [참고 3] 인코딩 파일 여닫기: open( ), close( ) 함수 파일 여닫기는 다음과 같이 한다. f = open('abc.txt', 'w') ... 파일 작업 ... f.close() 위 코드를 한줄

파이썬 이진 검색 binary search [내부링크]

정렬되어 있는 데이터가 있을 때, 그 중에서 내가 찾는 값이 몇번째에 있는지(=인덱스) 쉽게 알아내는 방법이 이진 검색이다. 데이터를 절반으로 나누어서 찾는 값이 절반 왼쪽에 있는지, 오른쪽에 있는지, 아니면 그 절반 지점이 찾는 값인지 확인하는 작업을 계속 반복한다. 다음의 순서로 설명한다. 그림으로 설명 코드로 설명 [심화] 재귀함수로 구현 < 작가 FoodieFactor, 출처 pixabay.com > 그림으로 설명 [1, 2, 3, 4, 5, 6, 7]로 된 리스트에서 5를 찾는 경우를 그림으로 설명한다. 코드 읽기에 자신이 있는 분은 '코드로 설명'을 바로 읽으셔도 된다. 코드로 설명 먼저 리스트의 첫번째 요소의 인덱스값(0)을 'low'라는 변수에 넣고, 리스트의 마지막 요소의 인덱스값( len(list) - 1)을 'high'라는 변수에 넣는다. low = 0 high = len(list)-1 다음 low값과 high값의 절반 지점이 되는 중앙값 middle을 구한다 (

[딥러닝을 위한 파이썬] 단독으로 쓰인 언더스코어 _ [내부링크]

언더스코어 '_'가 단독으로 쓰인 것을 처음 보면 당황스럽다. "이걸 언더바라고 읽어야 하나? 모양 그대로 입력하면 검색은 될까?" '_'의 정확한 이름은 언더스코어(underscore)다. 딥러닝에서 언더스코어가 단독으로 쓰일 때는 거의 한 가지 의미이다. 이번 포스팅에서는 이에 대해서만 설명하고, 딥러닝과 관계없거나 다른 문자열과 함께 쓰인 경우에 대해서는 종류만 언급한다. 설명 순서는 다음과 같다. 딥러닝에서의 대표적 용법: '버린다' 딥러닝 사례 기타 용법 <작가 Arek Socha, 출처 pixabay.com> 딥러닝에서의 대표적 용법: '버린다'의 뜻 딥러닝에서 언더스코어 '_'는 값을 받아서 버린다(throwaway), 값이 나오니까 '_'를 써서 받기는 받는데, 쓸모가 없는 부분이라 버린다는 뜻의 변수다. 예를 들어보자. 첫번째로 함수가 반환하는 값을 받는 경우다. 다음과 같이 사칙연산을 하는 함수가 있다. 이 함수는 4개의 값을 반환한다. def calcu4(a, b

[딥러닝을 위한 파이썬] 동적 변수명 [내부링크]

사실 이 주제는 딥러닝과 직접 관련이 없다. 적어도 내 짧은 딥러닝 경험으로는 딥러닝에서 동적 변수명이 쓰이는 것을 본 적이 없다. 하지만 이 블로그의 다른 포스팅, <한꺼번에 여러 장의 이미지를 보기>에서 동적 변수명을 사용하면서 설명을 약속했기에 작성한다. 파이썬 프로그래밍에서 나름 유용하게 쓰일 수 있는 기법이다. 설명 순서는 다음과 같다. 동적 변수명 예시 1 동적 변수명 예시 2 활용 사례 @ 여러 개의 그래프 그리기 [참고] eval( ) 함수 동적 변수명 예시 1 동적 변수명을 이해하려면 우선, 문자를 print( )할 때는 출력할 내용을 따옴표로 감싸지만, 변수를 print( )할 때는 따옴표를 쓰지 않고 변수명을 그냥 쓴다는 사실을 떠올려야 한다. 또한 print(변수명)을 하면 변수명이 아니라 변수에 담겨 있는 값이 출력됨도 기억해야 한다. 다음의 예를 보면 print(name0)에 의해 변수를 출력했을 때, 변수에 담겨 있는 값인 'jimin'이 출력되었고, pr

못난이 사과 그리고 이승윤 [내부링크]

온라인 마켓에서 못난이 사과를 샀다. 오프라인 마트에서 파는 못난이 사과를 몇 번 사먹었는데, 정상 상품들과 차이를 거의 못느꼈기 때문이다. ‘일정 물량을 이런 이름을 붙여 팔아야 하는 이유라도 있나 보다’는 생각이 들었었다. 그런데, 온라인의 못난이 사과를 받아든 난 당황해야 했다. 시들거나 상한 부분이 많아 낱과마다 여러 번의 칼질을 해줘야 하는 진정한 못난이 사과! 그런데 - 다시 한번의 반전이다 - 이 사과들의 맛이 참 독특하다. 처음 먹어보는 맛과 향을 내는 사과, 이런 사과가 있었나 싶다. 오프라인 마트에서 파는 사과들은 상당히 균일한 맛과 향을 내는데, 뭘까. 며칠 전 이웃님에게 소개받은 가수 이승윤. 어느 사극에서 비범한 능력을 숨기고 평범한 소시민으로 살아가는 주인공 청년 역을 맡으면 딱 어울릴 듯한 외모. 엔터 사에서 전문가들의 손길에 키워지지 않고 인디로 혼자 커온 가수. 그에게서 못난이 사과의 향기가 난다. 그가 부른 ‘너의 의미’, ‘내 마음에 주단을 깔고’

[딥러닝을 위한 파이썬] 순서 붙여주는 enumerate( ) [내부링크]

오늘의 문제 각 대륙을 대표하는 동물들이 모여서 달리기 대회를 했다. 호주의 캥거루가 1등, 아시아의 토끼가 2등, 아프리카의 하마가 3등을 해서 급한대로 '캥거루, 토끼, 하마'라고 적었다. 이를 '1등 캥거루, 2등 토끼, 3등 하마'라고 출력하는 것이 오늘의 문제다. 이를 위해 enumerate( ) 함수를 사용한다. <출처 pixabay.com, 작가 davenightingale> 순서 붙여 우승자 출력하기 문제 풀이에 앞서 for문을 살펴보자. for문을 반복 실행시킬 때 얼마나 반복할 것인지는 range(숫자)를 많이 사용한다. for i in range(3): print(i) → 0 1 2 리스트나 튜플의 요소들 하나하나를 대상으로 반복하기도 한다. runners = ['kangaroo', 'rabbit', 'hippo'] for runner in runners: # runner란 이름은 다르게 바꿔도 됨 print(runner) → kangaroo rabbit hipp

Image Segmentation 이미지 분할 코드 설명 [내부링크]

Image Segmentation('이미지 분할')은 이미지 내에서 우리가 인식을 원하는 객체와 배경을 구분하여 윤곽선을 그리는 딥러닝 알고리즘입니다. 각 픽셀은 아래 오른쪽 그림처럼 전경, 윤곽선, 배경의 세 가지 범주(category) 중 하나로 분류됩니다. 이 기술은 이미지와 영상 편집, 자율주행차, 로봇공학, 질병 진단 등 다양한 분야에서 활용되고 있습니다. 이번 포스팅에서는 옥스포드 대학교에서 만든 개와 고양이 데이터셋을 활용하여 Image Segmentation을 하는 코드를 분석합니다. 영문으로 작성된 원문 중 주요 부분을 우리말로 번역하고, 설명을 곁들였습니다. 코드는 keras.io/examples에서 가져왔습니다. [설명/번역에 대한 알림] 1. 설명을 덧붙인 부분은 녹색 글씨로 쓰거나 앞에 '@@' 표시를 붙여 원문과 구별하였습니다. 2. 영문은 주요 부분 위주로 번역하였습니다. Image segmentation with a U-Net-like architectu

[딥러닝을 위한 파이썬] np.where( )로 쓰는 조건문 [내부링크]

np.where( ) 함수를 쓰면 어떤 조건을 만족시키는 경우에 적용하는 값, 만족시키지 못하는 경우에 적용하는 값을 지정할 수 있다. 따라서 np.where( ) 함수는 다음의 형식으로 사용한다. np.where(조건식, True일 때(=조건식을 만족시킬 때)의 반환값, False일 때의 반환값) 예를 들어보자. A 자산운용사는 펀드매니저들이 공격적으로 투자하도록 유도하기 위하여 펀드매니저들을 다음과 같이 평가한다. 1년 동안의 투자 손익을 합계하여, 이익이 났으면 그 금액을 그대로 평가에 반영하고, 손실이 났으면 그 금액의 10%만 평가에 반영함. 이는 0보다 큰 숫자는 그대로 사용하고, 0보다 작은 숫자는 0.10을 곱하여 사용한다는 것이다. 이를 where( ) 함수를 이용하여 다음과 같이 나타낼 수 있다. 이해를 돕기 위하여 그래프도 그려 본다. import numpy as np import matplotlib.pyplot as plt x = np.linspace(-10,

[딥러닝을 위한 파이썬] 차원이 다른 ndarray [내부링크]

가로, 세로가 각각 250 픽셀이고 컬러인 그림을 나타내려면 250 x 250 x 3개의 숫자가 필요하다. 컬러를 표시하려면 R, G, B(Red Green Blue) 3개의 색상값이 있어야 하기 때문이다(아래 그림 참고). 그런데 이런 그림이 5만장 있으면 50000 x 250 x 250 x 3개의 숫자가 필요하다. 이 숫자들을 다루기 위해 딥러닝은 숫자들을 배열로 만든다. 즉 (50000, 250, 250, 3)의 shape을 갖는 4차원의 배열을 만들어 다룬다. 딥러닝에서 차원과 shape은 매우 중요하다. 이는 차원이나 shape이 맞지 않으면 알고리즘에 데이터를 input으로 넣을 수 없기 때문이다. 즉 특정 알고리즘이 원하는 차원이나 shape의 데이터가 있고, 그에 맞추어 주기 위해 차원과 shape을 늘리거나 줄여야 하는 경우가 많이 발생한다. 넘파이(numpy)에는 배열의 shape(모양)과 차원(dimension 또는 axis)을 다루는 함수들이 많은데, 이들은 딥

[딥 파이썬] 좀비 격리하기 reshape [내부링크]

좀비가 발생한 학교의 예를 들어 ndarray의 차원 바꾸기를 설명한다. 이번 포스팅을 제대로 이해하려면 차원과 shape의 개념을 알고 있어야 하는데, 차원이나 shape에 대해 먼저 보고 싶으신 분들은 직전 포스팅을 참고하시기 바란다. 글의 순서는 다음과 같다. 좀비 학교로 설명하는 reshape (파이썬 기초지식 필요) 기초부터 설명하는 reshape (쉽게 설명) 좀비 학교로 설명하는 reshape 짐우 고등학교에서 좀비가 발생하여 많은 학생들이 감염되었다. 긴급출동한 군부대가 감염되지 않은 학생들을 먼저 구출해낸 뒤, 운동장에는 증세가 명확히 나타난 학생들과 감염이 의심되는 학생들이 섞여서 남아 있다. 아래에서 이름이 '좀'이나 '쫌'으로 시작하는 학생들은 증상이 명확히 나타난 학생들이다. import numpy as np students = ['경아', '영수', '주노', '좀해', '좀빈', '좀야', '유호', '민지', '하무', '쫌만', '쫌~', '쫌와'] #

[딥러닝을 위한 파이썬] try문으로 예외 처리하기 [내부링크]

코드가 실행되다가 예외(일단 '에러'라고 이해하자. 뒤에서 자세히 설명한다)가 발생하면 그 뒤의 코드들은 실행될 기회를 얻지 못한다. 이를 계속 실행되게 하는 방법이 있을까? try문은 실행 도중 예외가 발생해도 멈추지 않고 코드가 끝까지 실행되게 하는 유연한 코딩 방법이다. 다음의 순서로 설명한다. 예외란? try문의 구성 블록들 try~ finally~ try~ except~ 딥러닝 코드 사례 [심화] with문과의 비교 예외란? try문은 예외에 대처하기 위해 쓰인다. 따라서 try문을 이해하려면 예외를 먼저 이해해야 한다. 파이썬의 에러에는 두 가지 종류가 있다. 구문 에러(syntax error)와 예외(exception). 구문 에러가 나면 코드가 아예 실행도 되지 않지만, 코드를 실행하다가 논리적 오류(logical error, = 예외)가 발생하면 파이썬은 이를 해결하려 하는데, 해결하지 못하면 에러 메시지를 내보내며 멈춘다. 이런 경우들이다. # 0으로 나누라고 해서

Neural Style Transfer 코드 @keras.io 설명 [내부링크]

다음은 keras.io의 examples에 나오는 Neural Style Transfer('뉴럴 스타일 트랜스퍼', 신경 스타일 전이)의 코드다. Neural Style Transfer에 대한 이론적인설명은 이미 많은 자료들이 존재하니 생략하고, 코드 설명에 집중하여 주요 부분 위주의 번역과 설명을 곁들인다 코랩에서 직접 실행시키며 보는 것을 추천 드리며, 링크는 ↓ https://colab.research.google.com/drive/1BsnVt51W_To5a-wLbEassg2DobtFJ_SE?usp=sharing 8_3_code_neural_style_transfer Colaboratory notebook colab.research.google.com Author: fchollet Date created: 2016/01/11 Last modified: 2020/05/02 Description: Transfering the style of a reference image to t

[딥러닝을 위한 파이썬] 코랩 유용한 팁 [내부링크]

코랩(Colab) 사용 시 알아두면 유용할 팁 몇 가지를 소개 드린다. 코랩의 가장 기본적인 기능은 이미 알고 계신 분들을 위한 글이다. 여러 곳을 한꺼번에 수정하기: 멀티 커서(multi-cursor) Tab키는 문단에도 먹는다: Tab과 Shift-tab 코랩 파일을 구글 드라이브의 원하는 폴더에 바로 저장하기 코랩 파일 공유하기 이 세로 선은 버그일까?: 세로 눈금자 안 보이게 하기 여러 곳을 한꺼번에 수정하기: 멀티 커서(multi-cursor) 아래 코드의 'not_selling'이라는 딕셔너리의 이름을 모두 'nonbiz_item'으로 바꾸려 한다. not_selling은 코드에서 세 군데에 나온다. 이를 한꺼번에 바꾸는 방법이 없을까? ① 첫번째 not_selling 바로 앞에서 클릭하여 그곳에 커서를 위치시키고, 키보드의 알트(Alt) 키를 누른 상태에서 바꾸고 싶은 다른 곳들을 하나하나 클릭하면 커서가 세 개 생겨 깜박인다. ② 이 상태에서 지우기(delete)를 하

월드IT쇼 2022 참관기 [내부링크]

3층 C 전시홀에 들어서자마자 4개 대기업 부스가 큼직큼직하게 전면에 배치되어 있습니다. 전자 라이벌인 삼성과 LG, 통신 라이벌인 SKT - KT 부스가 나란히. 지난주에 참관했던 <국제인공지능대전>에서 이들의 부재가 아쉬웠던 터라 많이 반가웠고 이들 위주로 보았습니다. 동영상 화질 개선 앱 '슈퍼노바' (SKT) 딥러닝 알고리즘을 이용하여 동영상 화질을 높여주는 앱입니다. 아래 사진 왼쪽은 원본(Before), 오른쪽은 업스케일링본(After)입니다. 현장에서는 실시간으로 작업이 가능하다고 듣고 놀랐는데, 나중에 기사를 찾아 보니 아직 실시간은 아닌 듯합니다. 폰의 AP 등 edge 자원을 돌려 작업하는 것은 아니고, 서버로 보내서 작업을 하여 다시 폰으로 받는답니다. 실시간으로 하려면 통신 속도까지 감안해야 하니 더욱 어려운 작업이 되겠네요. 4D로 UAM 탑승 체험 (SKT) HMD(head mount display)를 쓰고 놀이기구에 앉으니, 화면에 맞춰 놀이기구가 회전해서

[딥러닝을 위한 파이썬] 한꺼번에 여러 이미지 보기 [내부링크]

아래처럼 여러 장의 이미지(사진이나 그림)를 화면에 한꺼번에 출력하는 방법을 소개한다. 여러 개의 그래프를 한꺼번에 그리는 방법도 원리는 동일한데, 이에 대해서는 후반부에서 소개한다. 설명 순서는 다음과 같다. 이미지 준비하기 여러 장의 이미지 보기: 기본 방법 여러 장의 이미지 보기: for문으로 작성하기 여러 장의 이미지 보기: 모양까지 다듬기 여러 개의 그래프 그리기 [심화] 다른 방법 2가지 이미지 준비하기 설명에 사용할 이미지를 먼저 준비한다. 이 부분은 이해하지 않고 넘어가도 좋은데, 간략히 설명하자면 딥러닝에서 이미지 학습을 위해 많이 사용하는 mnist라는 데이터셋을 불러오는 것이다. mnist는 아라비아 숫자를 손으로 쓴 글씨 모음으로서 개별 이미지의 크기가 28 x 28 픽셀로 작고 총 7만개의 인스턴스를 갖고 있다. import numpy as np import matplotlib.pyplot as plt from tensorflow.keras.datasets i

[딥러닝을 위한 파이썬] 한 줄로 쓰는 함수 람다 [내부링크]

람다(lambda)는 한 줄로 쓰는 함수다. 보통 함수를 작성할 때는 def 함수명: 의 형식을 이용하여 두 줄 이상으로 작성한다. 람다는 이를 간단하게 한 줄로 작성한다. 이번 포스팅은 다음 순서로 설명한다. 사용 형식 람다에 여러 개의 인자 넣기 람다와 map( ) 함수 함께 사용하기 [참고] 람다를 바로 실행하기 [심화 1] 데이터셋 나누기 [심화 2] 데이터를 연속된 부분들로 쪼개기 사용 형식 예를 들어보자. 숫자를 제곱하는 함수는 일반적으로 다음과 같이 작성한다. def square(a): return a ** 2 square(3) → 9 이를 람다로 작성하면 다음과 같다. square = lambda a: a ** 2 square(3) → 9 형식은 변수 = lambda 인자 : 인자로 수행하는 코드이다 람다에 여러 개의 인자 넣기 람다의 인자(매개변수)는 여러 개가 올 수 있다. add = lambda a, b, c: a + b + c add(1, 2, 3) → 6 람다

[딥러닝을 위한 파이썬] axis = 0 [내부링크]

axis = 0는 axis = rows와 같은 뜻이다. 그런데 이것이 작동하는 모습을 보면 오히려 columns의 뜻이 아닌가 싶게 작동한다. 그래서 많이 혼동된다. 아래에서는 독자가 기억하기 쉽게 하기 위해 axis = 0만을 예로 든다. 설명 순서는 다음과 같다. 사용할 데이터프레임 생성 concatenate(병합) 하기: axis =0 sum 하기: axis =0 max값 구하기: axis =0 [추가 설명] concat: axis=1 사용할 데이터프레임 생성 먼저 사용할 데이터프레임을 두 개 만든다. import numpy as np import pandas as pd a = np.random.randint(1, 6, (2, 3)) # 1~5에서 랜덤 정수를 뽑아 shape (2, 3)인 ndarray를 생성 a = pd.DataFrame(a, index = ['bob', 'susan'], columns = ['first', 'second', 'third']) b = np.r

[딥러닝을 위한 파이썬] 파이썬에서 -1의 뜻 [내부링크]

파이썬에서 -1이 특수한 의미로 사용되는 경우 3 가지를 다음 순서로 소개한다. 리스트/튜플의 맨 마지막 요소 거꾸로 알아서 정하라: reshape( ), expand_dims( )에서 사용한 예 [심화 1] reshape(-1) [심화 2] 딥러닝 코드 사례: mnist 리스트/튜플의 맨 마지막 요소 -1은 리스트나 튜플처럼 순서가 정해져 있는 자료의 맨 마지막 요소(element)를 가리킨다. a = [1, 2, 3] a[-1] → 3 거꾸로 -1은 '반대방향으로'의 의미로도 쓰인다. 아래의 예에서 for문은 5에서 3까지 반대방향으로 적용되었다. for i in range(5, 2, -1): print(i, end=' ') → 5 4 3 그렇다면 [::-1]은 무슨 뜻일까? [::-1]은 리스트의 전체 순서를 뒤집는다. 앞의 ':' 이 모든 것을 가져오고, 뒤의 ':-1'이 순서를 거꾸로 만든다. a = [1, 2, 3, 4, 5] a[:] → [1, 2, 3, 4, 5] a

[딥러닝을 위한 파이썬] 출력 형식 지정: %s와 { }.format( )과 print(f' ') [내부링크]

별 것 아닌데 익숙하지 않으면 코드를 짤 때 자주 막히는 게 출력형식 지정이다. 기본적인 내용이므로 코드 예시 위주로 정리한다. 순서는 다음과 같다. % 기호를 이용한 출력: 문자 / 정수 / 실수 / 여러 개 출력, 줄 바꾸기, 줄 붙이기 {}.format( )을 이용한 출력: 기본 / 여러 개 출력, 순서 정해주기, 백분율(%) f string을 이용한 출력: print(f' ') = 파이썬 3.6부터 도입된 방식 심화: 딥러닝 코드 사례 - Neural Style Transfer % 기호를 이용한 출력 가장 오래된 출력 형식이다. 문자열을 출력할 때에는 '%s' 형식을 사용한다. name = 'Ariana Grande' print('첫번째 출연자는 %s다' % name) → 첫번째 출연자는 Ariana Grande다 정수를 출력하려면 '%d' 형식을 사용한다. count = 100 print('오늘은 윗몸일으키기 %d개를 했다' % count) → 오늘은 윗몸일으키기 100개를

국제인공지능대전 2022@코엑스 [내부링크]

4월 13일부터 15일까지 코엑스에서 열린 '국제인공지능대전' 전시회 참관 결과입니다. 350개 업체가 참여했다고 하는데, 10개 정도만 소개합니다. 무인 판매 NHN Cloud가 판매를 자동 인식하는 냉장고를 전시했습니다. 이 냉장고는 미리 등록해 둔 얼굴 사진과 대조하여 안면인식을 한 뒤 열립니다. 주류나 담배에 대한 미성년자 접근을 차단하기 위해서라고 합니다. 다만, 안면인식은 눈, 코, 입의 위치를 기반으로 하기 때문에 마스크를 쓴 채로는 인식이 안 된답니다. 냉장고 각 칸에는 윗부분에 카메라를 달아서 고객이 어떤 상품을 집어드는지 인식합니다. 한 대 설치하는 데 7백만원이 든다는데 원가 구성이 궁금하네요. 한 발 더 나아가 무인 편의점을 설치한 업체도 있었습니다(이름을 잊어버렸네요...). 입구에서 신용카드를 리더기에 읽히고 들어갑니다. 안에는 문이 달린 자판기 크기의 상품 진열대가 여럿 있습니다. 상품 진열대는 각 칸마다 카메라가 달려 있어서 그 칸에 어떤 상품이 놓여 있

[딥러닝을 위한 파이썬] 코랩으로 파일 읽어오기 [내부링크]

구글 코랩(Colab)으로 파일을 읽어 들이는 방법 네 가지를 소개한다. 구글 드라이브에 연결하여 읽어 들이기 로컬 드라이브로부터 업로드 인터넷 링크(URL)로 읽어 들이기 깃허브(github.com)에서 읽어 들이기 구글 드라이브에 연결하여 읽어 들이기 ① 먼저, 코랩에서 화면 왼쪽에 있는 '파일' 아이콘을 클릭한다. ② 새로 나타나는 화면에서 '드라이브 마운트(drive mount)' 아이콘을 클릭한다. ③ 팝업이 뜨면 '구글 드라이브에 연결'을 선택한다. 그러면 'drive'라는 폴더가 나타난다. 연결된 것이다. ④ 이제 내 구글 드라이브 어디에 있는 파일이든 찾아서 읽어올 수 있다. 읽어올 파일이 있는 곳으로 이동하여 파일명 위에 마우스 커서를 놓으면 우측에 점 3개가 생긴다. ⑤ 점 3개를 클릭하면 메뉴가 뜨는데 여기서 '경로 복사'를 선택하면 해당 파일의 경로가 클립보드로 복사된다. ⑥ 이제 필요한 곳에 경로를 붙여넣어 사용하면 된다. from IPython.display

환율과 금리 30년 역사로 예측하는 &lt;앞으로 3년 경제전쟁의 미래&gt; [내부링크]

앞으로 3년 경제전쟁의 미래 | 오건영 지음 | 지식노마드 | 2019.8 이 책 마지막 장의 제목이 ‘과거를 통해 미래를 본다’이다. 이 책은 한국 미국 중국 일본 유럽 1980년대부터의 경제사를 환율과 금리 관점에서 조망하며 경제의 미래를 예측한다. 쉽게 쓰기 위해 공들인 흔적이 느껴진다. 그러면서도 경제 예측을 위해 중요한 내용들은 모두 담고 있다. 이 책의 주요 주장들을 살펴본다. 한국도 일본처럼 부동산 버블이 붕괴하며 장기 침체에 접어들까 가능성이 상당히 낮다. LTV, DTI 규제 등으로 인해 과도한 부동산 버블이 나타나기 어렵고, 과거 일본 정부가 보여줬던 각종 시행착오를 재현하기도 쉽지 않다. (엔화가 안전자산 취급을 받아서 세계 금융시장이 흔들릴 때 엔화 강세가 되는 반면, 원화는 약세가 되어 수출에 도움이 되는 것도 한일 간의 차이다. 이하에서 나의 생각은 녹색으로 표시하여 책의 내용과 구분하였다) [1980~1990년대 일본 기준금리] 일본 중앙은행이 1989년

&lt;아베, 그는 왜 한국을 무너뜨리려 하는가&gt; - 아베 정권의 정체와 우리의 올바른 대응 [내부링크]

<아베, 그는 왜 한국을 무너뜨리려 하는가> | 호사카 유지 | 지식의숲 | 2019.9 일본을 이해하고 일본과의 관계를 고민하기 위한 책 두번째다. 앞서 포스팅한 <사쿠라 진다>가 2015년에 발간되었음에 비해 2019년 9월에 나온 최신판이다. <사쿠라 진다>가 대담 형식이라 자세한 설명이 아쉬운 반면 하나하나 친절하게 알려준다(따라서 두 권을 모두 읽을 경우 이 책을 먼저 읽는 것이 좋겠다). 저자 호사카 유지는 한국인으로 귀화하여 세종대학교 교수로 재직 중이다. 책 내용을 일부 소개한다 다시 전쟁을 일으키고 싶은 일본 아베와 일본 극우파들은 다음과 같이 말한다. “일본은 침략 국가가 아니었다. 백인 지배하에 놓인 아시아를 해방시켜 줬을 뿐이다. 일본군은 범죄 행위를 저지르지 않았다. 위안부는 자발적으로 위안부가 된 상업적 여성들이었다. 일본군은 어디서든 환영받았다. 앞으로도 일본군은 적극적 평화주의로 아시아에 평화를 실현할 것이다” 이들은 과거 태평양 전쟁을 벌였을 때가 가장

&lt;조커&gt; 간단 리뷰 - 설득력 있으나 피튀겨 부담스러운 [내부링크]

사람들은 선악 구도가 명확한 작품을 좋아하지 않는다. 세상에는 대부분 선과 악이 뒤섞여 있어서 절대선이나 절대악에 공감하기 힘들기 때문일 것이다. 그래서 선과 악의 경계가 모호한 작품이 오히려 주목받는 느낌이다. 꿈을 추구하며 살아가던 한 선량한 시민이 어떻게 희대의 악의 화신인 조커(배트맨의 숙적)가 되었는지 비교적 사실적으로 그려낸 이 영화를 보고 있노라면, 그가 느낀 절망과 분노에 공감하고 심지어 순간적으로나마 그의 폭력에 동의하고 싶어진다. 미국에서 이 영화에 대한 우려가 나오는 이유일 것이다. 맹목적 폭력이 아닌, 감정의 밑바닥부터 다져올린 이유있는 폭력이 갖는 설득력과 파급력에 대한 두려움이다. 영화는 많은 칭찬을 받고 있다. 모든 면에서 완벽하다, 특히 호아킨 피닉스의 연기가 엄청난 몰입을 가져온다는 평이다. 네이버 영화평 중에 ‘착하게 사는 것은 높은 계단을 오르는 것과 같지만 포기하고 내려갈 때는 너무나도 빠르고 즐겁다’는 글처럼 계단 씬이 맵시 있다. 하지만 액션과

module 'tensorflow' has no attribute 'Session' 에러 [내부링크]

이 에러가 나는 경우가 여럿 있겠지만, 내가 겪은 경우와 해결책을 공유한다. 결론부터 간단히 말하면, 텐서플로가 2.0으로 업그레이드 되면서 Session 기능(API)을 제거했기 때문에 발생하는 오류였다. <현상> 텐서플로우에서 다른 명령어는 실행이 되는데, Session API를 실행하면 에러가 난다. sess = tf.Session() print(sess.run(hello)) --> AttributeError: module 'tensorflow' has no attribute 'Session' <발생 원인> 텐서플로가 2019.9.30일 2.0으로 업그레이드 되면서 Session API를 삭제하였다 (이에 대해서는 아래 솔라리스님의 홈페이지 참조). 현재 시점에서 텐서플로를 설치하면 2.x 버전이 설치되는데, 삭제된 Session API를 인식하지 못하는 것이다. 구글 측에서 좀 더 친절한 에러 메시지를 보여줬으면 하는 아쉬움이 있다. 33. TensorFlow 2.0 Rele

아나콘다에 텐서플로 2.0과 1.15 모두 설치하기 [내부링크]

아나콘다(anaconda)에 텐서플로 2.0과 1.15 버전을 둘 다 설치하여 쥬피터 노트북을 사용하는 방법을 소개한다. 간단히 요약하자면 이렇다. 기본환경(base env)에 아니콘다(파이썬 최신버전 3.7.6을 자동 설치함)와 텐서플로 1.15를 설치하고, 가상환경(venv)에 파이썬 3.6과 텐서플로 2.0을 설치하고 (욕심은 2.1을 설치하고 싶으나 잘 안 되는 듯하다) 마지막으로 nb_conda_kernels를 base env와 venv 양쪽에 설치하면 된다. 위의 요약이 이해되시는 분은 더 이상 아래 내용을 읽으실 필요가 없고, 이해가 안 되시는 분들을 위해 과정을 하나하나 기술하고자 한다. 과정 기술에 앞서서, 이 과정을 제대로 이해하기 위해서는 가상환경(venv: virtual environment)에 대한 이해가 필요한데, 가상환경은 기본환경과 독립적인 공간을 만들고 그곳에 프로그램을 설치하여 기본환경의 영향을 받지 않고 따로 돌릴 수 있는 환경을 의미한다. 기본환경

『종이의 집』 명장면 명대사 베스트 10 [내부링크]

『종이의 집』은 애초에 시즌 1~2가 스페인 TV 드라마로 제작되고 방송되었는데, 그 뒤 넷플릭스가 국제 판권을 획득하고 짧게 편집하여 세계에 방송했다. 시즌 3부터는 넷플릭스에 의해 제작되면서 스케일이 커져서 파나마의 무인도, 태국 등 세계 5개 지역에 50개의 세트를 만들어 놓고 촬영했다. ‘오징어 게임’이 나오기 전까지는 비영어권 프로그램 중 최고의 시청률을 기록하고 있었다. 교수의 정교한 두뇌 플레이, 충동적인 듯하면서도 규율과 인간미를 지닌 캐릭터들, 햇살이 내리쬐는 잔디밭에서의 즐거운 식사에서 숨막히는 반전까지, 유체역학에서 거시경제까지 많은 것을 담고 있는 드라마이기 때문일 것이다. 『종이의 집』에서 기억하고 싶은 장면들과 대사, 그리고 노래를 뽑았다. 10. 교수가 라켈 경감 어머니의 커피잔을 깨다 교수가 라켈 경감의 어머니를 죽이기 위해 집으로 찾아간다. 하지만 청부 살인자이기보다는 체스 플레이어인 교수는 경감 어머니와 대화를 나누다가 어머니가 “당신은 좋은 분 같네

[딥러닝을 위한 파이썬] for문을 한 줄로 작성하기 [내부링크]

for문을 쓸 때는 보통 두 줄 이상으로 나누어 <for 조건문:>과 <반복 실행문>을 작성하게 된다. 컴프리헨션(comprehension)을 이용하면 이를 한 줄로 끝낼 수 있다. 이번 포스팅에서는 컴프리헨션에 대해 다음 순서로 설명한다. - 사용 형식 이해하기 - 컴프리헨션 + if문 - 중첩 for문을 컴프리헨션으로 - [심화 1] 가장 긴 단어의 길이 찾기 - [심화 2] 단어 사전 만들기 - [참고] 왜 comprehension이라 부를까? 컴프리헨션 사용 형식 이해하기 코드를 바로 살펴보자. 아래 리스트 a의 모든 요소(element)값에 2를 곱하려면 어떻게 할까? for문을 써서 작성하면 이렇다. a = [1, 2, 3] b = [] for i in a: b.append(i * 2) b → [2, 4, 6] 컴프리헨션을 쓰면 코드가 다음과 같이 간략해진다. a = [1,2,3] b = [i * 2 for i in a] b → [2, 4, 6] 코드에서 ' i * 2 f

우리 시대의 고전 &lt;와호장룡&gt; - 들고양이의 못다 핀 사랑 이야기 [내부링크]

와오장룡 臥虎藏龍 , Crouching Tiger, Hidden Dragon | 액션, 판타지 | 대만, 홍콩, 미국, 중국 | 2001.3 재개봉, 2000.8 개봉[국내] | 감독 이안 이번이 세번째 관람이다. 알듯말듯한 주인공들의 마음, 종잡을 수 없는 이야기 전개, 서역의 사막에서 대나무숲까지 그리고 설익은 치기에서 도가적 깨달음까지 아우르는 폭, 이런 요소들이 이 영화를 다시 보게 만든다. 이번에는 액션 보다는 주인공들의 감정선에 초점을 맞추며 보았다. 원작소설 작가인 왕도려의 작품들이 애정을 중심축에 놓는다 하고, 이안 감독 또한 인간을 해부하는 데 탁월하다고 하니 이렇게 보는 것도 괜찮으리라. 용(장쯔이)은 왜 절벽에서 뛰어내렸을까. 용이 호(장첸)에게 마음을 여는 과정을 보면 마치 한 마리 야수 같은 느낌이 든다. 화살을 쏘고, 돌로 치고, 뾰족한 걸로 찌르고. 상대를 죽일 듯이 덤벼들다가 사랑에 빠져버리는 이 난해한 심리전개는 이제 리무바이(주윤발)를 향해서 펼쳐지고

&lt;골목의 전쟁&gt; - 자영업에 대한 잘못된 상식을 바로잡아 주는 책 [내부링크]

저자 김영준 | 스마트북스 | 2017.10.15 저자는 기업은행 출신으로서 도시의 구석구석을 다니며 가졌던 궁금증들을 블로그와 언론에 썼다가 반응이 좋아서 책으로 냈다고 한다. 현장을 많이 본 듯한 내공에 데이터와 통찰력을 가미하여 자영업에 대한 우리의 잘못된 상식을 바로잡아 준다. 책 내용 중 흥미로웠던 부분을 소개한다 사업 아이템이 좋다고 해서 성공하는 것이 아니다. 어느 음식점의 식재료가 신선한 것은 장사가 잘 됨에 따른 결과이지, 장사가 잘 되는 원인이 아니며, 따라서 사업주는 사업 초기에 자신의 영향력이나 인맥을 활용하여 선순환을 만들어 내야 한다. 그게 안 되면? 문을 닫거나 자본력으로 잘 될 때까지 버텨야 한다! 마치 주식시장의 가치 투자자처럼! 다양한 상가가 있어야 사람들이 찾아온다. 파리바게뜨나 백종원 식당에 가기 위해서 특정 상권을 찾아가는 사람은 없을 테니 말이다. 상권이 지닌 다양성은 통상 상권이 발달할수록 줄어든다. 상권이 다양하고 그 다양성을 잘 유지할수록

전후 70년 현대 일본을 말하다 &lt;사쿠라 진다&gt; [내부링크]

우치다 다쓰루 & 시라이 사토시 지음 | 정선태 옮김 | 우주소년 | 2019.5 (원저 2015) 일본에 비판적인 두 일본 지식인이 제2차 세계대전 이후 70년 동안의 일본 현대사에 대해 대담을 펼친다. 내부자의 시각에서 본 생생한 이야기가 많다. 일본이 어떤 나라인지 이해하고 일본을 어떻게 대해야 하는지 생각을 정리하는 데 도움이 된다. 일부 생경한 일본 단어들 때문에 초반에 읽는 속도가 안 붙고, 2015년에 나온 책이어서 최근의 상황 변화를 담고 있지 못한 아쉬움은 있다. 패전을 종전이라 속이며 왜곡이 시작되다 제2차 세계대전을 일으킨 일본의 전쟁세대는 ‘패전’을 ‘종전’이라 바꿔 부르며 패전을 속였다. 전쟁 중에 무슨 일이 있었는지, 왜 졌는지, 져서 무엇을 잃었는지 등의 질문은 제기하지 않았다. 딱지가 앉은 상처에 소금을 밀어 넣고 싶지 않은 듯이 피했다. 이렇게 패전을 똑바로 바라보고 성찰하지 않은 것이 전후 많은 왜곡의 원인이 된다 ※ 이와 관련하여 책 뒷부분 ‘추천의