cheese_jelly_의 등록된 링크

키자드에 등록된 총 211개의 포스트를 확인하실 수 있습니다.

Naver Blog

shell script set option

#shell #set #option shell을 통한 프로그래밍을 하다보니 재밌는 옵션이 있어서 기억하고자 작성한다. 바로 'set'인데, 여기서 -x와 -e에 관해 정리하려고 한다. #!/bin/bash set -e 위와 같이 사용하며 이 옵션은 스크립트 실행 중 오류가 발생하면 종료시키는 옵션이다. 둘러보다 보니, 이 옵션은 사용시 주의 해야한다고 한다. 그 이유는 명령어를 실행한 리턴코드가 0이 아니면 프로그램을 종료하게 만들기때문이다. 예를 들어 grep를 작성하여 작성된 스크립트에서는 반환값이 없는 경우에는 강제종료하게 만들어 버린다. 원래 의도한 바가 반환값 없을 때를 겨냥하고 다음 코드를 작성해 두었다면 문제가 될 여지가 있는 부분이다. 그래서 stackoverflow에서는 set -e보다는 trap 을 권유한다. #!/bin/bash set +e 위와 반대되는 내용으로는 set +e가 있는데, 이는 에러가 발생해도 계속 명령을 실행하도록 한다. 다음으로는 set -x이

Naver Blog

[ubuntu] 우분투 움짤 만들기

#우분투 #움짤 뭔가 ppt를 만들 때 실험 결과를 조금 더 멋스럽게 보여주고 싶어서 찾다 보니, 움짤을 생각해 내게 되었다. 우분투에서도 움짤을 만들 수 있을 지 궁금해서 찾아보니 역시 pip로 존재했다. 이름은 'peek'이며 설치는 터미널에서 간단하게 3줄이면 된다. sudo add-apt-repository ppa:peek-developers/stable sudo apt update sudo apt install peek -y 타이핑 해보면 '엔터'를 치라는 문구가 나오는데 그때 엔터를 누르면 다운로드가 이어진다. 이렇게 다운되었다면, win키를 누르고 'peek' 타이핑하면 된다. 그럼 우분투에서 움짤 만들기 끝!

Naver Blog

[pytorch] squeeze, unsqueeze

텐서를 사용하다보면 텐서의 모양을 바꿔야 하는 경우가 생긴다. torch 에서는 이를 위하여 squeeze, unsqueeze를 제공한다. squeeze는 차원을 줄일때 사용하며, unsqueeze는 차원을 늘릴때 사용한다. 주의 : squeeze는 차원이 1인 경우에 해당하는 모든 차원을 줄여준다. unsqueeze는 특정 위치에 차원이 1인 경우를 추가한다. - 여기서 특정 위치의 시작은 0부터 시작하며, 앞에서 부터 올라간다. x = torch.zeros(1,1,32,32) x.size() #torch.Size([1, 1, 32, 32]) x = torch.squeeze(x) x.size() #torch.Size([32, 32]) x = torch.unsqueeze(x,0) x.size() #torch.Size([1, 32, 32]) 만약 특정 위치가 1이 아닌 경우에 차원을 줄이려고 하면, 결과는 변하지 않는다. x = torch.zeros(1,32,32) x = torch.

Naver Blog

[python] NumPy array is not JSON serializable

#numpy #json 안녕하세요 오늘은 NumPy array is not JSON serializable 에러를 해결해 보겠습니다. numpy로 만들어진 array를 return하는 과정에서 return하는 부분이 딱 정해진 type이 있거나 코테를 푸는데 코테 문제의 답이 원하는 형식이 numpy ndarray가 아닐때 발생하는 것 같아요. 해결방안 에러가 난 ndarray에 .tolist()를 적용해 줍니다! import numpy as np a = [1,3] a = np.array(a) #list to ndarray a.tolist() # ndarray to list

Naver Blog

[vim] vim window split

안녕하세요 vim에서 window split하는 방법에 대해서 알려드리려고 합니다. terminal을 사용하다 보면 vim을 사용하게 되는데, window창을 나눠서 작업하게 되면 훨씬 일의 효율이 올라가는 것을 느낄 수 있을 거에요. 아래처럼 ternimal에 command을 작성하고 나면 editor가 열리는데요. $ vim test.txt 그 상태가 새 글을 작성할 수 있는 상태입니다. i 를 누르고 입력을 하시면 글이 작성됩니다. 그리고, 오늘 포스팅의 목적인 window split하는 방법은 아래와 같이 작성하시면 됩니다. :sp <file_name> #가로로 나눠짐 :vs <file_name> #세로로 나눠짐 위의 명령어를 사용하면 창이 나눠지게 되는데요. vim은 마우스로 창 변경이 안됩니다. 그래서 키보드로 움직여 주셔야 해요. Ctrl+ww 컨트롤 키와 ww 즉, w를 두번 누르면 창간의 이동이 됩니다! 마지막으로 열린 창들을 모두 끄고 싶다면 아래와 같이 치면 vi

Naver Blog

[python] zfill, rjust 문자열 앞에 원하는 문자 채우기

#python #zfill #rjust 파이썬을 사용하다보면 문자열의 맨 앞에 원하는 문자를 넣고 싶은 경우가 생긴다. 단순히 '+'연산자를 사용해서 이어 붙일 수도 있지만, 정해진 길이가 들쑥날쑥하다면 함수를 사용하는 것이 편하다. 중요한건 위의 함수들은 모두 문자열에서 작동하는 것이기 때문에 출력도 문자열 이라는 것! 1. zfill # zero 를 채우는 함수 '1'.zfill(5) #'00001' '12'.zfill(3) #'012' '123'.zfill(5) #'00123' 2. rjust # 오른쪽에 원하는 문자열을 채우는 함수 # rjust(width, char) '1'.rjust(5, '0') #'00001' '12'.rjust(3, '0') #'012' 'abc'.rjust(5,'d') #'ddabc'

Naver Blog

[pytorch] in-place-operation

In-place-operation : 값을 변경할 떄 copy와 같은 함수를 사용하지 않고도 바로 변경해버리는 함수 예를 들어, a=3 b=5 c = a + b 라고 가정하자 기존에는 a+b를 진행해도 a값은 3이고 b의 값은 5이다. 그러나 여기서 ' a.add_(b)'로 작성한다면 (a+b의 의미임) a의 결과값은 8이 된다. import torch a = torch.tensor(3) b = torch.tensor(5) c = a + b # c = tensor(8) # a = tensor(3), b = tensor(5) a.add_(b) print(a) # a = tensor(8), b = tensor(5) 기존 파이썬에서는 이와 같은 연산을 진행하려면 copy와 같은 것을 사용해야 하는데, 이를 대신해서 값을 바로 바꿀 수 있는 함수라고 생각하면 되겠다. 장점 : 메모리를 아낄 수 있다. c를 담을 그릇을 만들 필요가 없음! 단점 : 기존에 a가 가지던 값을 기억해야할 경우에는

Naver Blog

Tensorboard 원격으로 열기

#tensorboard #tensorflow #pytorch 서버환경에서 딥러닝 모델을 돌릴 때, 어느정도 수렴했는지 보기 위하여 tensorboard라는 것을 사용한다. 그러나 서버 환경에서는 웹으로 열어서 확인이 어렵기 때문에 원격으로 들어가서 봐야한다. 이를 해결하는 방법을 까먹지 않게 적어두려 한다. tensorboard 로그가 쌓이고 있는 서버에 아래와 같이 작성한다. <서버 terminal> $ tensorboard --logdir='로그 작성해둔 path' 그다음, 크롬창을 열어서 아래와 같이 작성한다. <로컬 크롬 url> http://서버ip:6006 아마 디폴트 값이 6006일텐데 서버의 사용자마다 포트번호가 다를 수 있으니 확인하시길! 만약에 위의 방식에서 접속할 수없다면, port forwarding을 진행해야 한다. <로컬 terminal> $ ssh -L 16006:localhost:6006 서버ID@서버ip 그 다음은 다시 크롬창을 열어서 url에 아래와

Naver Blog

[pytorch] repeat() vs expand()

1. repeat() : 특정한 shape으로 텐서 값을 반복하여 채워주는 함수, expand()와는 다르게 tensor data를 복사해오는 성질이 있다. >>> x = torch.tensor([1, 2, 3]) >>> x.size() torch.Size([3, 1]) >>> x.repeat(4, 2) tensor([[ 1, 2, 3, 1, 2, 3], [ 1, 2, 3, 1, 2, 3], [ 1, 2, 3, 1, 2, 3], [ 1, 2, 3, 1, 2, 3]]) >>> x.repeat(4, 2, 1).size() torch.Size([4, 2, 3]) 주의 ! numpy.repeat 과는 다른 성질을 지니니 혼동하지 않도록 주의하라고 한다. 2. expand() : 위와 마찬가지로 특정 텐서값을 반복하여 생성하지만, 차원의 크기가 1인 경우에만 적용가능하다. repeat과의 차이는 원래의 텐서를 참조 하여 생성하기 때문에 원본이 바뀐다면 expand된 텐서도 바뀌게 된다. >>

Naver Blog

[python] How to add virtualenv in Jupyter Notebook kernel?

오늘은 virtualenv를 jupyter Notebook의 Kernel에 추가하는 방법을 적어두려고 합니다. virtualenv는 리눅스 환경에서 작업을 할 때 버전 충돌을 막기 위해서 많이 사용하는데요. 기존에 구현해둔 모델(코드)의 version이 특정 version에서만 돌아간다면 더 필수적으로 사용해야 합니다. 저도 마찬가지로 virtualenv를 여러개 create해서 사용하고 있습니다. 하지만, local에서 jupyter를 사용한다면 default로 local이 잡혀서 virtualenv의 tensorflow나 torch가 import되지 않습니다. 그래서 이를 해결하려면 Jupyter Notebook의 Kernel을 추가해서 사용하면 됩니다. 사용법은 정말 간단하고, 이미 virtualenv를 가졌다는 전제하에 작성해봅니다. 1. 가상환경을 activate 합니다. source myenv/bin/activate 2. ipykernel을 설치합니다. pip instal

Naver Blog

[linux] > 와 >> 차이

리눅스에서 파일에 저장하는 기호로 '>'를 사용할 것이다. 하지만 '>>'도 있는데, 이를 잘 구분하여 사용해야 앞전의 파일이 날라가는 불상사는 피할 수 있을 것 입니다ㅜㅜ > : 파일을 새로 작성합니다. 기존에 파일이 존재한다면 '덮어쓰기'를 진행합니다. : python에서 file option에서 'w' 와 같습니다. >> : 파일의 뒤에 이어서 작성합니다. 기존에 파일이 존재한다면 '이어쓰기'를 진행합니다. : python에서 file option에서 'a'와 같습니다. 꼭 둘을 혼동하지 말고 사용하시길 바랍니다!!

Naver Blog

[ubuntu] How to clean 'swap' memory

오늘은 컴퓨터 메모리의 swap을 지우는 방법을 작성해 보려고 합니다. 우분투 환경이고, shell script나 명령어로 가능한 방법이에요! 아래와 같이 terminal에 작성해 주시면 되는데요. 혹시 premission denied 가 뜬다면 sudo를 붙여주세요! $ swapoff -a && swapon -a 저는 자주 쓰기 때문에 shell로 작성두고 씁니당! 오늘도 감사합니다.

Naver Blog

[python] sort, sorted 차이

sort() t = [5, 2, 3, 1, 4] t.sort() print(t) # [1, 2, 3, 4, 5] - list 에 한정되며, return 값이 None이다. - 원본 리스트의 값을 변경한다. sorted보다 빠르다. sorted() t = [5, 2, 3, 1, 4] print(sorted(t)) # [1, 2, 3, 4, 5] print(t) #[5, 2, 3, 1, 4] - iterable 한 자료형(튜플, 리스트, 딕셔너리, 문자열)에 모두 사용가능하다. - return 값으로 정렬된 값을 내보낸다. - 원본 리스트 값이 변하지 않는다. c = ['ccc','aaaa','bb','ddddd'] sorted(c, key=len) #['bb', 'ccc', 'aaaa', 'ddddd'] c = ['ccc','aaaa','bb','ddddd'] c.sort(key=len) print(c) #['bb', 'ccc', 'aaaa', 'ddddd'] c = ['ade','c

Naver Blog

How to get wikipedia corpus?

삽질하며 얻은 위키피디아 데이터를 얻어내는 방법을 정리한다. 1. 데이터 다운로드 Wikimedia Downloads Database backup dumps (current page) A complete copy of all Wikimedia wikis, in the form of wikitext source and metadata embedded in XML. A number of raw database tables in SQL form are also available. These snapshots are provided at the very least monthly and... dumps.wikimedia.org 위의 사이트에 들어가서 위키피디아 데이터를 다운로드 한다. 여기서 주의 할 점은 다양한 포맷으로 위키 데이터가 존재하는데, .XML 로 된 파일을 받아야 한다는 점이다. 나중에 이를 처리하는 파일에서 XML 파일만 처리하기 때문이다. 아래 그림과 같이 , XML이고,

Naver Blog

Github Sorry, something went wrong. Reload? 해결

깃에서 ipynb으로 저장된 글은 열어보려고 해도 위의 에러를 내뱉으며 잘 보여주지 않는다. 이를 해결하기 위해서는 아래의 url에 들어가서 보려고 하는 ipynb 파일의 주소를 넣으면 아주 깔끔하게 볼 수 있다. nbviewer nbviewer A simple way to share Jupyter Notebooks Enter the location of a Jupyter Notebook to have it rendered here: Go! Programming Languages IPython IRuby IJulia Books Python for Signal Processing O'Reilly Book Probabilistic Programming Misc Data Visualization with Lightning Interactive plots with ... nbviewer.jupyter.org 사용법도 어렵지 않으며, 위의 주소로 접속하면 아래와 같은 창이 뜬다. 여기서 창에

Naver Blog

du 'Permission denied' 해결하기

리눅스 환경에서 폴더별 디스크의 용량을 확인하고 싶을 때 ,du나 df를 사용한다. (주로 du사용, df는 전체 용량 나옴) du를 사용하면 permission denied가 나오는 경우가 있는데, 이를 해결하는 방법을 작성해두려한다. 우선 폴더별 용량 표시 방법 du -sh {원하시는 경로} 위와 같이 누른다면 폴더별로 쭉 돌아서 모든 파일의 용량이 나오고 마지막에 최종 현재 경로의 용량이 나온다.. 만약 경로에 1천개의 데이터/폴더 가 있다면 벌써 머리가 지끈해진다. 또한, permission denied도 만날 수 있는데 이를 해결하는 방안은 다음과 같다. 현재 폴더를 기준으로 용량 파악하는 방법은 다음과 같다. (permisstion denied도 피하고, 기다림 없는 방법) du -h --max-depth=1 2>/dev/null 그럼 permission denied로 고생하거나, du를 쳐서 마지막까지 기다리지 않아도 된다! reference [Linux] 폴더 용량 큰

Naver Blog

[python] dictionary sort 하기

파이썬 딕셔너리를 정렬하는 방법에 관해 작성하려 한다. 딕셔너리를 정렬할 때는 lambda를 사용해서 정렬하는데, 처음에는 이해하기 어렵겠지만 쓰다보면 이만한 방법이 없다. 아래와 같은 딕셔너리가 있다고 가정하자. 이를 key를 기준으로 내림차순 정렬 하려한다. a = {'a' : 1, 'b' : 2, 'c' : 3} sorted(a.items(), key=lambda x : x[0], reverse=True) # [('c', 3), ('b', 2), ('a', 1)] 이제 value 값을 기준으로 내림차순 정렬하는 방법 a = {'a' : 1, 'b' : 2, 'c' : 3} sorted(a.items(), key=lambda x : x[1], reverse=True) # [('c', 3), ('b', 2), ('a', 1)] value값의 길이를 기준으로 오름차순 정렬하는 방법 a = {1:'aaa',2:'bbbbb', 3 : 'cc'} sorted(a.items(), key=l

Naver Blog

[git] github profile badge 만들기

github profile을 Readme로 생성할 수 있다! 생성하게 되면 프로필의 옆에 생기게 된다. 여기서 badge를 달 수 있는데, 이를 생성하는 방법을 꽤나 찾다가 삽질로 얻어낸 방법을 작성하려 한다. 1. shields.io 에 들어간다. 2. your badge 에서 아래와 같이 'MESSAGE' & 'COLOR' 를 작성한다. (원하시는 메시지를 넣으시면 됩니다.) 3. Make Badge 를 누른다. 그럼 이런 창이 생길 건데, 여기 url을 복사해서 쓰면 된다. 4. 여기서 로고를 넣고 싶으면, simpleicons 에 들어가서 원하는 로고를 찾는다. 5. https://img.shields.io/badge/-Naver%20blog-brightgreen?style=flat-square& 에서 여러분이 찾으신 로고를 뒤에 연결시켜주면 되는데, 연결을 & 로 한다. 그럼, logo=Naver& 을 넣으시면 되고, 최종적으로 네이버 블로그 배지의 주소는 아래와 같다. (

Naver Blog

[shell script] check file is exist

shell script에서 파일의 유무를 체크해야 할 경우가 더러 있다. 이를 위해서 다양한 옵션을 넣어서 확인할 수도 있지만, 주로 많이 사용하는건 -f 옵션일 것이다. (파일 유무체크함) 사용법은 아래 코드와 같고, 주의 할 점은 꼭 공백을 잘 넣어줘야 한다는 것이다..!! 공백을 안넣고 했다가 [: missing `]' 와 [-f: command not found 이런 에러를 만나게 되어서 삽질을,,,,ㅜㅜ 아무튼 그냥 아래의 코드를 그대로 복사하시는게 에러없이 잘 될것이다. if [ -f "$filename" ]; then echo "file exist" else echo "file not exist" fi -f 옵션 말고 다양한 것을 넣을 순 있지만, 그것은 아래 참고된 글을 확인해서 보시면 좋을 듯 싶다 shell script (bash) 에서 file 유무 체크하는 방법과 파일 존재 검사 옵션 (file exist check) shell script (bash) 에서 f

Naver Blog

[python] copy dictionary key from other dictionary

파이썬에서 딕셔너리의 키를 다른 딕셔너리로 부터 copy하는 방법을 작성해두려 한다. 같은 딕셔너리 키를 가지지만, 새로운 딕셔너리를 선언할 때마다 if문을 사용해서 넣지 않아도 된다! 코드는 정말 간단한 한줄로 해결된다. NEW DICTIONARY = dict.fromkeys(YOUR DICTIONARY.keys(),[]) # 결과 # YOUR DICTIONARY = {1: [1,2,3], 2:['a','b'], 3:[0] } # NEW DICTIONARY = {1 : [], 2: [], 3:[]} YOUR DICTIONARY 가 다음과 같은 값들을 지녔다고 가정하면, 위의 코드를 실행시키게 된다면 YOUR DICTIONARY의 key는 그대로 유지된 채, value 값에는 빈 리스트가 들어가게 된다. 아주 유용하게 사용될 듯 싶다.

Naver Blog

[python] How to subtract value in two dictionary

딕셔너리 2개의 value값의 차이를 계산하는 방법을 알아보자. 1. pythonic 한 방법 이 방법은 dictionary comprehension을 사용하는 방법이다. 제일 마지막줄이 핵심인데, 이를 차근차근 뜯어보면 아래와 같이 구동된다. 1. a의 key값을 loop를 통해서 순차적으로 얻어낸다. 2. a의 value값과 b의 value값의 차이를 구하여, 1의 key값을 기준으로 구해진 값이 value값이 되도록 한다. 3. 반복하여 새로운 dictionary c를 만들어 낸다. 여기서 get은 Key에 대응되는 Value를 돌려준다. 그리고 이를 뜯어보면 dictionary.get('키값', '디폴트값')을 의미하는데, 디폴트 값은 옵션이라 안넣어도 무관하다. 다만, 없는 key에 대한 접근이 나면 error가 나는데, 이를 디폴트 값으로 0이라고 넣어두면 에러없이 두 개의 딕셔너리 간의 value값의 차이를 구할 수 있다. a = {'a':3,'b':1} b = {'a'

Naver Blog

한글코드 ks완성형, cp949, 유니코드

한글 코드의 ks완성형과 cp949, 유니코드에 관한 글을 아래 링크에 작성해두었습니다. 기술 관련 글은 git blog에 작성하니 많이 방문해주세요. 한글코드 (ks완성형, cp949, utf-8) 인코딩 & 디코딩 hyejinwon.github.io

Naver Blog

[python] raise warning

우리가 기본적으로 에러를 임의로 발생 시키거나 회피할 때는, try-except / raise / assert 등을 사용한다. 그러나 위의 함수를 만나게 되면 코드가 중간에 끊기게 된다. 이런 점을 피하기 위해서는 warning을 잘 사용하는 것도 방법이다. (물론 warning과 error의 경우가 다르긴 하다.) python에는 warning 라이브러리가 있다. 이를 사용하는 법에 대해서 알아보자. 간단하게 import해주면 되는데, 여기에 함수가 여러개 있지만 가장 기본적인 warn을 사용한다. import warnings warnings.warn('warning message', UserWarning) 결과 test.py:4: UserWarning: warning message warnings.warn('warning message', UserWarning) 이와 같이 작성한다면 에러를 terminal에 띄울 것이다. 근데 뒤에 'UserWarning'은 python docu

Naver Blog

[python] raised warning make one line

앞전에 포스팅한 warning에 대해서 조금 더 찾아보니 한줄로 에러를 발생시킬 수 있다는 것을 알게 되었다. 이전의 warning은 아래와 같이 2줄로 print되지만, test.py:4: UserWarning: warning message warnings.warn('warning message', UserWarning) 두 번째 줄을 제거하고도 warning을 print할 수 있는 방법을 가져왔다. 우선 결과를 먼저 보면 아래와 같이 출력된다. test.py:4: UserWarning: warning message 그럼 이렇게 만드는 코드를 아래에서 설명하겠다. 바로, formatwarning을 사용하는 것이다. def warning_on_one_line(message, category, filename, lineno, file=None, line=None): return '%s:%s: %s:%s\n' % (filename, lineno, category.__name__, mes

Naver Blog

[pytorch]TypeError: '<' not supported between instances of 'Example' and 'Example'

에러 : TypeError: '<' not supported between instances of 'Example' and 'Example' 발생 원인 : torchtext sort 옵션의 기본값이 True이었고, 배치에 해당하는 값을 정렬하는 과정에서 생긴 에러이다. 처음에는 iterator 데이터가 망가진줄 알고 놀랐는데 그건 아닌것 같았다. 해결 방안 : torchtext의 iterator를 split할 때, sort옵션을 False로 명시해주었다. 기존 train_iter, valid_iter, test_iter = data.Iterator.splits((train_data, valid_data, test_data),\ batch_size=batch_size, device=device) 변경 train_iter, valid_iter, test_iter = data.Iterator.splits((train_data, valid_data, test_data), \ batch_si

Naver Blog

[pytorch] 네이버 영화평 감성분류 (LSTM, RNN)

pytorch로 네이버 영화평 (nsmc data)를 감성분류 하는 법을 알아봅니다. 전체 코드는 아래의 주소에서 보시면 더 편하게 보실 수 있습니다. (star 많이 눌러주세요~) HyejinWon/pytorch-nsmc-classification pytorch sentiment classification example used NSMC data - HyejinWon/pytorch-nsmc-classification github.com Dependency - pytorch - torchtext (0.9.0) - pandas - konlpy - sklearn 모델 layer는 lstm만 사용했지만, gru나 rnn으로 변경해도 큰 무리없이 작동 될거에요. import torch import torch.nn as nn import torch.optim as optim import pandas as pd from sklearn.model_selection import train_test

Naver Blog

[shell] terminal 이 종료되어도 프로그램은 작동되게 하는 방법 (nohup)

딥러닝 모델을 학습시키다 보면, 로컬에 붙어서 학습시키기 보단 딥러닝 서버에 붙어서 작업하는 경우가 많다. 딥러닝 서버에 접근할 때, ssh 와 같은 방법을 사용하고, 만약, 로컬 컴퓨터를 꺼야하는 상황이 생긴다면 이제 눈앞이 아찔해진다.. (ssh로 접근해서 돌려놓은 코드도 꺼지기 때문) 이런 상황을 벗어나는 방법은 nohup이라는 명령어를 사용하는 것이다. 사용법 nohup [작동시킬 명령어] & 사용 예제는 다음과 같다. # example nohup python main.py & nohup ./shell.sh & 여기서 주의할 점이, shell script는 권한이 755 이상이어야 한다. 따라서, nohup을 하기 전에 chmod 755 shell.sh 를 해야한다. 뒤에 나오는 &는 프로세스를 돌리는 것이 background로 돌린다는 의미이다. 그래서, &를 넣게 되면 터미널 창에는 아무것도 안나오지만, jobs 나 bg 으로 확인해보면 실행 시킨 코드가 도는걸 확인할 수

Naver Blog

[python] ParserError: Error tokenizing data.

오늘의 에러 : ParserError: Error tokenizing data. C error: Buffer overflow caught - possible malformed input file. 발생 원인 : pandas에서 read_csv 를 통해서 데이터를 읽는 과정에서 발생함. : 입력 데이터의 마지막 column이 \n으로 끝나거나 시작해서 발생했다. 나의 경우는 좀 특이했는데, \n은 제일 첫번째 column의 시작점에 들어가 있고, \r이 제일 마지막 column의 마지막에 들어가 있었다. 해결 방안 : 기존 read_csv에 line delinetor를 넣어줌으로써 해결 #기존 data1 = pd.read_csv('./data.tsv', sep='\t') #해결 data1 = pd.read_csv('./data.tsv', sep='\t', lineterminator='\n') reference Error in Reading a csv file in pandas[CPar

Naver Blog

[python] jupyter notebook 줄바꿈

주피터 노트북을 통해서 과제를 하거나, 코드를 짜는 사람이 많을 것으로 보인다. 메모를 사용해서 작성을 하는데, 1개의 cell 에서는 엔터를 쳐도 하나의 단락으로 출력되는 문제가 있다. 입력 : 출력 : 이를 해결하기 위해서는 html tag를 하나 넣어주면 되는데, 바로 <br> 이다. 입력 : 출력 : 해결방안 : 문장 뒤에 <br> tag를 넣어줌

Naver Blog

CLM vs MLM

BART paper에서 언급된 개념 CLM (Causal Language Model) : models the probability of a word given the previous words in a sentence, Trasformer Decoder part - 트랜스포머 디코더 부분과 같이, 모델이 이전 단어정보를 가지고 현재 단어를 예측하는 모델 MLM (Masked Language Model) : The masked language modeling objective of BERT. - BERT와 같이 입력을 마스킹 해서 예측하는 방법으로 학습하는 모델

Naver Blog

[python] matplotlib plt google colab 한글 깨짐

1. 아래와 같이 작성하여 셀을 실행한다. !sudo apt-get install -y fonts-nanum !sudo fc-cache -fv !rm ~/.cache/matplotlib -rf 2. 코랩의 런타임을 재시작한다. 3. 아래의 코드를 실행 한다. import matplotlib.pyplot as plt plt.rc('font', family='NanumBarunGothic') # 주의 2번을 실행한 뒤에 1번을 절대 실행시키지 마세요! 2번 -> 3번 이렇게 하셔야 합니다. 로컬 컴퓨터에서 matplotlib.pyplot 한글 깨짐 [python] matplotlib 한글 깨짐 및 마이너스(-)기호 깨짐 #python #matplotlib #한글깨짐 #마이너스깨짐 #ubuntu jupyter notebook 환경에서 matplotlib를 보기 편해... blog.naver.com

Naver Blog

[pytorch] AttributeError: cannot assign module before Module.__init__() call

에러 : AttributeError: cannot assign module before Module.__init__() call 아래의 코드처럼 돌렸더니 에러가 발생했다. class CustomModule(nn.Module): def __init__(self): self.conv1 = nn.Conv2d(1, 20, 5) # Add key conv1 to self._modules self.conv2 = nn.Conv2d(20, 20, 5) 발생 원인 : Module을 만들고서 super class의 init을 호출하지 않아서 발생한다고 한다. 해결 방안 : super().__init__() 을 넣어준다. 아래와 같이 super(Module name, self).__init() 으로 하는 것도 좋다. class CustomModule(nn.Module): def __init__(self): super(CustomModule, self).__init__() # Initialize self

Naver Blog

[python] requirements.txt 으로 패키지 설치하는 법

가끔 깃으로 코드 전체를 받는다던가, 과제를 할 때 requirements.txt 라는 이름을 가진 파일을 볼 수 있다. 이런 파일에는 해당 코드가 돌아가는 패키지의 버전이 명확하게 적혀있는데, 이를 설치하는 방법은 다음과 같다. 1. 가상환경을 active 한다.(가상환경이 있을 시) 2. terminal에 작성한다. $ pip install -r requirements.txt 위와 같이 pip 한다면 패키지를 쭉쭉 설치하는 것을 볼 수 있다. 만약 에러가 난다면 해당 부분을 주석처리 '#' 하고 일단 다른 패키지를 다 설치하고, 나중에 stackoverflow나 google으로 검색해서 해결방안을 찾아야 할것이다...

Naver Blog

CS231n assignment3 inline question1 GAN part

문제 : We will look at an example to see why alternating minimization of the same objective (like in a GAN) can be tricky business. Consider c(c,c)=ccf(x,y)=xy . What does mincmaxcc(c,c)minxmaxyf(x,y) evaluate to? (Hint: minmax tries to minimize the maximum value achievable.) Now try to evaluate this function numerically for 6 steps, starting at the point (1,1)(1,1) , by using alternating gradient (first updating y, then updating x using that updated y) with step size 11 . Here step size is the le

Naver Blog

벡터(Vector)의 정의와 실좌표공간(Real corrdinate spaces)

본 포스팅은 Khan 수업을 기반으로 작성된 글입니다. Vector란 : 크기(magnitude) + 방향(direction) 을 동시에 나타낸다. : 크기만 주어진 경우에 vector라 부르지 못한다. 예를 들어, 5km 는 크기에 해당하고 동쪽 은 방향을 의미한다. 이 둘이 모두 합쳐 졌을 때, velocity라 부르고 이는 벡터라 명한다. 만약 크기와 방향이 같은 벡터가 있다면 이는 동일한 벡터이다. (초록색) 벡터는 column vector(열벡터)로 표현할 수 있다. Real coordinate spaces (실좌표공간) : n 차원 실수 공간을 의미 표현 방법 만약 R^2 라고 한다면 2차원적 실수공간을 의미한다. 위의 그림에서 열벡터 [3,4] 는 2차원 실좌표공간을 가진다. 여기서 R^2 는 분리해서 생각해볼 수 있는데, R 은 실수좌표공간을 의미하고, 2는 실수값을 가지는 모든 2-튜플을 의미한다. 튜플은 순서를 가지는 리스트로, 즉, 2개의 순서리스트를 의미한다.

Naver Blog

Unit Vector(단위벡터)의 크기 구하기

본 포스팅은 Khan의 선형대수를 토대로 작성된 포스팅입니다. boostcourse의 연습문제 단위벡터를 푸는데 배우지 않은게 나와서 당황했지만, Khan에는 있는 강의였다ㅎㅎ 혹시 막혀서 포스팅을 찾은거라면 아래 주소로 들어가서 강의를 듣고 와주세여 https://ko.khanacademy.org/math/precalculus-new/x9e81a4f98389efdf:vectors/x9e81a4f98389efdf:unit-vec/v/unit-vector-intro unit vector란 행 또는 열로만 움직이는 벡터를 의미한다. 즉, i = (1,0) j = (0,1) 이라는 의미다. 만약 2i라면 행으로 2칸 움직인다는 의미고, 3j라면 열로 3칸 움직인다는 의미다. 이제 연습문제에서는 unit vector의 크기를 구하라고 나온다. 구하는 방식은 다음과 같다. (네이버는 latex이 안맞아서 그림으로 첨부한다.) 이렇게 공부하고 나면 연습문제를 풀 수 있을 것이다..!!

Naver Blog

[ubuntu] cp: omitting directory 'FOLDER NAME'

오늘의 에러 cp: omitting directory 'FOLDER NAME' 발생 원인 - cp(복사)를 하는데 폴더가 포함된 경우에 발생하였다. 해결 방안 -r 옵션을 넣어줌 $ cp -r ./data(복사대상) ../data(복사할 위치)

Naver Blog

[python] chardet 문자열 인코딩 타입 확인하는 방법

Python string encoding type check 파이썬에서 문자열 인코딩 타입을 확인하는 방법에 대해서 알아보자 어떻게 알아낼지 정말 많이 찾아봤는데 영어권은 인코딩에 대해서 별로 관심이 없는것 같았다. (구글링으로 안나옴,,,, 한국어로 쳐야 나오더라) (ascii랑 utf-8이면 다 되서 그런듯 싶다) 그래서 찾아낸 방법으로는 라이브러리 chardet를 사용하는 방법이다. 사실 터미널에서 file을 통해서 파일의 인코딩은 확인할 수 있지만, 내가 필요한건 파일이 아니라 파이썬에서 output으로 나오는 문자열의 타입이 궁금했다. 무튼 방법은 chardet 패키지를 사용하는 방법이다. 1. 설치 하기 $ pip install chardet 2. 사용하기 import chardet a = '안녕하세요'.encode() print(chardet.detect(a)) # {'encoding': 'utf-8', 'confidence': 0.9690625, 'language':

Naver Blog

[python] 파이썬에서 커맨드 출력 가져오기 how to get shell output string in python

파이썬을 사용하다보면 커맨드에 직접 명령을 날리는 os 라이브러리를 사용할 때가 있다. 이때, shell을 사용해서 쉘이 잘 돌아갔는지 또는 결과문을 print해서 얻는다. 하지만 이렇게 얻은 print string은 terminal 에 결과를 출력해 주는 방식이라, python의 변수로 입력을 받고 싶으면 다른 방법을 찾아야 한다. 1. os.popen(command).read() 가장 좋은 방법은 위의 명령어를 사용하는 것이다. 또한 가장 추천한다. import os result = os.popen('ls -al').read() print(result) # 현재 폴더의 리스트가 나열된다. # -rw-rw-r-- 1 hyejin hyejin 32 6월 15 14:41 test.txt # -rw-rw-r-- 1 hyejin hyejin 52 5월 15 12:41 test2.txt 2. os.system(command) 두 번째로는 os.system을 쓰는건데, 이 방법은 그저 명령문

Naver Blog

내적, 아마다르 곱 차이

1. 내적 : 두 벡터간의 element를 곱하고, 모두 더하여 scaler 값으로 나타낸 것을 의미한다. : 부르는 이름이 참 많은데, dot product , inner product, scaler product 등으로 불린다. : 기호는 아래와 같은 (점) 기호를 사용한다. 아래의 예시를 보자 벡터 a, 벡터 b가 다음과 같은 값을 가질 때, 이를 내적하면 결과는 다음과 같다. 2. 아마다르 곱 : 두 벡터간의 element를 곱한 것을 의미한다. 즉 벡터의 shape은 남는다! : element wise 라고 부르며, 기호는 아래와 같은 기호를 사용한다. 아래의 예시를 보자 벡터 a, 벡터 b가 다음과 같은 값을 가질 때, 이를 아마다르 곱을 하면 결과는 다음과 같다. 위의 내적과는 다르게, 벡터의 모양 (1,4)의 shape은 지켜지는 것을 확인할 수 있다.

Naver Blog

Adaptive learning rate vs Learning rate scheduler 의 차이

1. Adaptive learning rate - 매개변수마다 모두 동일한 learning rate를 가지고 매개변수를 업데이트하는 문제를 해결하기 위해 등장 - 각 매개변수마다 자신의 상황에 따라 학습률을 조정해 사용 - 일정한 시간적 규칙을 가지고 학습률을 조정하는 것이 아니라, 매개변수 마다 사용한다는 점 - ex. AdaGrad, RMSProp, Adam 2. Learning rate scheduler - 일련의 학습과정에서 동일한 학습률을 가지고 업데이트하는 문제를 해결하기 위해 등장 - 미리 정한 시간적 규칙(scheduler)을 통해 학습률(learning rate)를 decay(낮추는)시키는 방법 - ex. time-based decay, step decay, exponential decay

Naver Blog

[git] git blog에 latex 넣기 (+ $$ 안되는 경우 해결)

solution of Jekyll MathJax display math problem 전체적인 방법은 아래 블로그를 통해서 git blog에 latex을 넣는 것을 완료했다. 하지만, inline latex만 작동되고, display latex은 작동이 되지 않았다...!! 즉, $~$은 잘 되는데, $$~$$은 안되었다. 모든 수식은 inline으로 작성할 순 없기에 해결방안을 찾았다. 1. _config.yml 수정 위의 블로그와 동일하다. # Conversion markdown: kramdown highlighter: rouge lsi: false excerpt_separator: "\n\n" incremental: false 2. mathjax_support.html 파일 생성 <중요> %여기가 다르다% _includes 폴더에서 mathjax_support.html을 생성하며, 아래와 같이 작성한다. <script type="text/x-mathjax-config"> Mat

Naver Blog

UAS, LAS 의 차이

ML의 sequence labeling 의 평가 지표로 UAS와 LAS을 주로 사용하는데, 이 둘 간의 차이를 비교해보자. dependency parsing을 기준으로 설명하며, 해당 자료는 CS224n의 강의에서 가져옴. 1. UAS : Unlabeled Attechment Score의 약자로, 의미론적 관계를 고려하지 않는다. 의미론적 관계를 고려하지 않는다는 말의 의미는 다음과 같다. Universal Dependency(UD) Tag를 고려하지 않는 다는 말인데, UD tag에는 nsubj, ROOT, det, conj, ... 등이 있다. 그러나 UAS에서는 Unlabeled 를 고려하면 이와 같은 relation tag는 고려하지 않고, dependency parsing의 head와 dependent의 관계가 제대로 연결되었는가 만 고려한다. 위의 그림에서 UAS를 구해보자. Gold(정답)와 Parsed(모델예측 결과)에서 가장 오른쪽에 위치한 tag는 신경쓰지 않고,

Naver Blog

[docker] jovyan passward & how to use vim

docker를 통해서 작업을 하다보면 매번 컨테이너를 올릴때 vim을 설치해야만 vim을 사용할 수 있다. 근데 vim을 설치하려면 sudo passward가 필요한데, 이를 작성해보고자 한다. passward jovyan의 default passward는 'jovyan'이나, 'jupyter'이다. vim 설치 방법 # container는 올린 상태라고 가정 $ sudo apt-get update $ sudo apt-get install vim

Naver Blog

[python] 멜론 노래가사 크롤링 코드

멜론 음악 탭에서 노래 가사를 크롤링 하는 코드 입니다. 모든 장르를 다 가져오는데, 300장까지만 뒤로 갈 수 있는 것으로 기억하네요. 이게 한글 노래를 기준으로 하다보니, 영어만 들어간 노래가사는 제외되었습니다. 선 작업 진행하셔야 하는게, chromedriver랑 path 이런 것들은 여러분 환경에 맞게 해주셔야 해요. #-*- coding:utf-8 -*- from selenium import webdriver from bs4 import BeautifulSoup from time import sleep import re import random driver = webdriver.Chrome('/home/hyejin/song/chromedriver') driver.implicitly_wait(3) #url = 'https://www.melon.com/genre/song_list.htm#params%5BgnrCode%5D=GN0100&params%5BdtlGnrCode%5D=&

Naver Blog

[SQL] google bigquery 시작하기

SQL도 요즘 같이 공부하고 있습니다. 그러던 중, google 의 bigquery가 무료 크레딧도 주면서, 공공 데이터로 연습할 수 있다는 것을 알았습니다. 그래서 이부분에 대해서 한번 작성해보려 합니다. 역시나 가장 좋은 교과서는 공식 문서입니다. 아래 링크 참조 https://cloud.google.com/bigquery/docs/quickstarts/quickstart-web-ui?hl=ko-KR 빠른 시작: Cloud Console 사용 | BigQuery | Google Cloud Google을 선택해야 하는 이유 More 솔루션 More 제품 More 가격 책정 More 시작하기 More 문서 개요 가이드 참조 샘플 지원 리소스 지원 콘솔 문의하기 무료로 시작하기 BigQuery 시작하기 샘플 안내 가이드 데이터 보안 및 거버넌스 BigQuery 지리 정보 시스템 가이드 빠른 시작: Cloud Console 사용 Google Cloud Console을 시각적 인터페이스로

Naver Blog

[ubuntu] tmux 사용하기

딥러닝 모델학습은 엄청난 시간을 소요하기 때문에 로컬 컴퓨터가 꺼져도 원격에서 명령한 명령어는 작동해야 한다. 그래야 학습이 꺼지지 않고 돌아가기 때문! 이 전에는 백그라운드에서 돌려서 이러한 문제를 해결했다. 이 명령어는 nohup 이다. 하지만, 이를 대신할 엄청난 명령어를 알게 되었는데, 삽질과정과 tmux 에 대해서 알아보려고 한다. tmux 는 세션을 기준으로 다시 세션에 접속/퇴장 이 가능한데, 세션이 무엇이냐면, 명령어에 연결된 문이라고 생각하면 쉽다. 세션을 하나 열고, 이 세션에서 여러 터미널을 열어서 사용 가능하기도 하고, 또는 이 세션을 원격 컴퓨터에서 열었다면, 로컬에서 SSH로 접속한 터미널을 종료해도 다시 원격 컴퓨터의 세션에 접근이 가능하다. (정말 놀랍지 않은가...?) 그럼 이를 차근차근 진행해보자. tmux를 로컬에 설치할지, 원격에 설치할지 고민이 많았는데, 원격에 설치하고, 로컬에서는 ssh로 접근하는 방식으로 진행하였다. 즉, 로컬 컴퓨터에서 원

Naver Blog

[python] NaN 값 잡아내기

How to take NaN value in python pandas로 열어보면 Nan값이 보이는 경우가 종종 있다. 이를 조건문으로 거르기 위해서 아래와 같이 if 문을 열심히 칠해도 안잡히는 NaN....!!!!!!!! if row['A'] == 'nan': continue #-------------------------- if row['A'] == 'Nan': continue #-------------------------- if row['A'] == float('NaN'): continue 참고로 임의로 nan 값을 생성하는 방법은 아래 코드와 같다. float('NaN') #nan 저런 if 문에도 잡히지 않는 Nan 값!!! 너무너무 화나지만 역시 갓 구글은 해답을 알려주심! 나또한 잊지 않기 위해서 글을 작성한다. Nan 값 잡는 방법 def isNan(value): return value != value 위의 함수를 사용하면 된다. value에는 pandas의 colu

Naver Blog

GCP(linux) anaconda install

GCP 구글 클라우드 (linux 환경)에서 anaconda install 하는 방법 1. download anaconda installer # 만약, Downloads 폴더가 없다면, 아래와 같이 생성해줌 $ mkdir Downloads $ cd Downloads # python 3.7 version $ wget https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh 2. install anaconda $ bash Anaconda3-2020.02-Linux-x86_64.sh 중간에, [yes] 와 엔터키를 누름! 3. add path $ source ~/.bashrc 4. create virtural env $ conda create --name [YOUR_NAME] # activate virtural env $ conda activate [YOUR_NAME] # deactivate $ conda deactivate

Naver Blog

[pytorch]ModuleNotFoundError: No module named 'transformers.tokenization_bert'

만약 이런 에러를 만나게 된다면 해결 방법은 2가지 이다. 1. transformers 의 패키지 버전을 내린다. 아마 현재 사용하고 있는 transformers 의 패키지 버전이 가장 최신일 가능성이 높다.(ex. 4.x 버전) 그렇다면, transformers 버전을 3.x 로 낮춰주면 에러는 해결된다 pip install transformers==3.5 2. 4.x 버전을 유지한다면, from 선언을 달리하면 된다. #기존 from transformers.tokenization_bert import BertTokenizer #변경 from transformers import BertTokenizer

Naver Blog

[카페] 청라 카페 콘트라베이스

원래 자주 가던 카페를 리뷰해보려고 합니다. 이 카페의 특징은 특정한 날에 재즈 카페로 변신한다는 점인데요. 재즈 공연하는 날은 콘트라베이스 인스타그램에서 확인해보시면 됩니다! www.instagram.com www.instagram.com 크리스마스에는 재즈를 본격적으로 즐길 수 있는 카페로 변신하였고, 다녀온 그 현장을 블로그에도 남깁니다. 축제 타이틀은 "옥빛로 크리스마스 거리 축제"로 기간은 12.24~12.26까지 진행되었습니다. 저는 사전예약을 네이버를 통해서 했기 때문에 입장료를 25% 할인 받은 15,000원을 지불하였고, 이 입장료에는 아래 두 번째 사진에서 나열된 음식들 중 택 1을 할 수 있었습니다. 저는 그 중에서 "오늘의 브런치 - 부르스게타"를 주문하였고 진짜 맛있었어요..!! 부르게스타는 아래 사진과 같으며 토마토, 양파, 레몬즙, 올리브유, 등이 올라간 핑거푸드인데 정말 좋았습니다. 저는 5:30PM 시간에 참석하여 "이승현 퀸텟"의 재즈 공연을 관람하였

Naver Blog

[python] tolist() 함수

오랜만에 올리는 코딩관련 포스팅이다! 그동안 에러를 안만난건 아니지만, 바쁘게 지내와서 포스팅할 시간이 없었다...ㅠ 나중에는 2021년도 회고의 글도 한번 작성해보고 싶다! 사담은 여기까지 하고, 오늘은 tolist() 함수에 대해서 작성하려고 한다. 저는 주로 pandas의 dataframe이나 series 타입을 list 형태로 변경할 때 사용하며, 함수 이름에서 예상되듯이 list 타입으로 변경시켜주는 함수다. 사용 방법은 아래와 같다. import pandas as pd # 임의의 DataFrame 선언 a = pd.DataFrame(np.arange(12).reshape(3, 4), columns=['A', 'B', 'C', 'D']) # DataFrame For loop for idx, row in a.iterrows(): print(type(row)) # <class 'pandas.core.series.Series'> print(row) # A 0 # B 1 # C 2

Naver Blog

[pytorch] TypeError: object of type 'int' has no len() in torchtext

오늘 다룰 에러는 TypeError: object of type 'int' has no len() 이다. /opt/conda/lib/python3.9/site-packages/torchtext/legacy/data/field.py in <genexpr>(.0) 246 return minibatch 247 if self.fix_length is None: --> 248 max_len = max(len(x) for x in minibatch) 249 else: 250 max_len = self.fix_length + ( TypeError: object of type 'int' has no len() 전체적인 에러 형식은 위와 같다. 이 에러를 검색하면, int 타입에 len()을 붙여서 에러가 났다는 말만 나오는데,,,, torchtext에서는 나오지 않길래 해결 방안을 작성하려고 한다. 결론부터 말하면, torchtext의 LABEL이 들어가는 Field에 이를 LABEL이라고 명시하

Naver Blog

[pytorch]AttributeError: '_IncompatibleKeys' object has no attribute 'cuda'

발생 에러 AttributeError: '_IncompatibleKeys' object has no attribute 'cuda' AttributeError: '_IncompatibleKeys' object has no attribute 'to' 첫번째 에러를 보고 모델을 load하는 과정에서 cuda로 매핑이 안되나? 싶어서 to(device)로 변경했었다. 그랬더니 두번째 에러가 발생했다. 모델을 gpu로 못 보내는게 아니라 뭔가 문제가 있는 것 같아서 다시 코드를 살펴봤다. 해결방안 문제는 간단했다. model을 load하는 과정에서 아래와 같이 작성했기 때문이다. model=model.load_state_dict(torch.load('model.pt')) model.eval() 변경 model.load_state_dict(torch.load('model.pt')) model.eval() 에러없이 잘 돌아간다

Naver Blog

[pandas] dataframe to text file

내가 까먹지 않기 위해서 쓰는 글...! 일반적으로 csv나 txt파일로 dataframe을 만들기 위해서는 pd.read_csv()라는 함수를 쓴다. 그럼 그 반대로, dataframe을 csv나 txt로 저장하는 방법은 무엇일까? pd.to_csv() 이다. csv로 저장하는 방법은 아래 파일 확장자를 .csv로 변경해주면 된다. 아래 코드는 dataframe을 "sample.txt"라는 이름으로 저장할 것이며, 구분자는 탭을 사용할 것이고, dataframe에 나타나는 index는 없는 상태로 저장함을 의미한다. import pandas as pd df.to_csv('./sample.txt', sep="\t", index=False)

Naver Blog

[pytorch]RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublasCreate(handle)`

오늘의 에러 RuntimeError: CUDA error: CUBLAS_STATUS_NOT_INITIALIZED when calling `cublasCreate(handle)` 더불어, 아래와 같은 warning도 같이 등장했다. /pytorch/aten/src/ATen/native/cuda/Indexing.cu:662: indexSelectLargeIndex: block: [257,0,0], thread: [64,0,0] Assertion `srcIndex < srcSelectDimSize` failed. 원인 - torch.nn.Embedding layer에 정의된 크기보다, 모델의 input으로 주어지는 값이 더 크기 때문. 즉, torch.nn.Embedding(3, 256) 일 때, input sequence는 [0, 10, 10]과 같이 embedding 숫자보다 더 큰 값이 들어갔기 때문이다. 해결 방법 1. 가장 큰 이유는 tokenizer가 잘못 됐을 가능성이 크다.

Naver Blog

[python] TypeError: unhashable type: 'list'

오늘의 에러 : TypeError: unhashable type: 'list' 발생 원인 : dictionary 의 key를 접근할 때, list를 넣었기 때문 해결 방안 : list type을 int type으로 변경해준다. # dictionary a = {0:0, 1:0} result = [1] a[result] += 1 위와 같이 코딩하게 된다면, 위에서 나온 에러(TypeError: unhashable type: 'list')를 만날 수 있다. 왜냐하면, 사실상 a[result]에서 요청하는 값이 a[[1]] 이런 모양이기 때문이다. 따라서 이를 해결하기 위해서는 a[1]과 같이 접근해야하고, 그럼 int type으로 변환이 필요하다. 1. indexing a[result[0]] += 1 2. str to int b = [str(i) for i in result] b = ''.join(b) a[int(b)] += 1 개인적으로는 1의 방법을 추천한다.

Naver Blog

[python] defaultdict

python에는 dictionary가 있다. 이 자료형은 key와 value로 구성되는데, 사전에 정의하지 않은 key로 접근하면 KeyError를 내뱉는다. 그렇다고, 모든 key에 대해서 사전에 정의하기란 쉽지 않다. 이런 문제를 해결하기 위한 방법으로 defaultdict라는 것을 소개한다. Defaultdict defaultdict은 사전에 정의되지 않은 key로 접근하여도 에러를 내뱉지 않는 특징을 가진다. 외부 함수를 꼭 import 해줘야 하며, 사용 방법은 아래와 같다. from collections import defaultdict a = defaultdict(list) a[1] = 10 print(a) # defaultdict(<class 'list'>, {1:10}) 위의 코드에서 defaultdict의 인자로, list를 넣은 것을 확인할 수 있다. defaultdict에는 3개의 type을 넣을 수 있고, 각 type의 default값은 다음과 같다. - li

Naver Blog

[카페] 완정역 애견 동반 가능 &quot;서원안길&quot;

오늘은 완정역에 애견 동반 가능한 카페 "서원안길"을 리뷰해보려 합니다. 위치는 다음과 같아요. 서원안길 인천광역시 서구 원당대로608번안길 14 저는 올라가면서 입구가 어딘지 헷갈리더라구요... 어떻게 들어가긴 들어갔습니다 ㅎㅎ 이렇게 들어가면, 대나무 + 돌 길이 반겨줍니다. Previous image Next image 서원안길은 앞서 언급한 바와 같이 애견동반 가능한 카페로, 반려견을 데리고 오실 수 있어요. 그러나, 반려견은 데리고 올 때는 야외에 있어야 하고, 만약 상황상 야외에 앉을 수 없다면, 실내에 목줄을 묶어두는 곳이 있으니 이 부분 참고하시면 좋을 것 같아요. (강아지가 뛰어놀 수 없는 카페에요) 서원안길의 메뉴는 다음과 같아요. Previous image Next image 커피 외에도 빵도 많이 파니까 참고해주세요. 음료가 나오기 전에 가게를 둘러봤습니다. 1 층 (사람들이 앉아계셔서 자리를 제대로 못찍었네요) Previous image Next image 2

Naver Blog

[evaluation] Rouge-N / Rouge-L

논문에서 많이 언급되는 평가 지표를 설명한다. ROUGE v. BLEU 차이 ROUGE : 얼마나 많은 Reference sentence token이 Generated sentence token 에 포함되는지 BLEU : 얼마나 많은 Generated sentence token이 Reference sentence token 에 포함되는지 gold standard the cat was under the bed machine inference output the cat was found under the bed Rouge-N Rouge-N은 n-gram 방법을 사용하는데, n에 따라서 이름이 달라진다. 주로 Rouge-1, Rouge-2 이런 식으로 표현한다. 또한, recall과 precision 같이 사용되며 다음과 같이 표기한다. 위의 예시를 토대로 Rouge-1의 recall과 precision을 구하면 다음과 같다. 이렇게 계산하는 것을 기반으로 Rouge-2를 구해보면 아래와

Naver Blog

[overleaf] Can be used only in preamble

overleaf를 처음 쓰다보면 실수하는 부분인거 같다. 에러의 원인 \begin{document} 태그를 지나고 \usepackage{...}를 쓰려고 했기 때문이다. \begin{document} ... \usepackage{} ... 즉, 아래 코드와 같이 usepackage는 begin{document}보다 상단에 위치해야 한다. \usepackage{} \begin{document} ... reference Can be used only in preamble 사용하기 쉬운 온라인 LaTex 편집기. 설치 필요없음. 실시간 협업. 버전 관리. 수백 개의 LaTex 템플릿. 그리고 그 이상. ko.overleaf.com

Naver Blog

[overleaf] table 만들기 (feat.multirow)

overleaf로 table만들기는 복잡하다. 더 정확하게 말하면, 귀찮다... 왜냐하면, 표를 만들어주는 형식을 내가 작성해야하기 때문인데 이를 쉽게 해결해주는 사이트가 있어서 공유하고, 사용 방법을 알아보자. 사이트는 아래와 같다. Create LaTeX tables online – TablesGenerator.com File Edit Table Column Row Cell Help Default table style A B C D E 1 2 3 4 Generate Result (click "Generate" to refresh) Copy to clipboard \begin { table } [ ] \begin { tabular } { lllll } & & & & \\ & & & & \\ & & & & \\ & & & & \end { tabular } \end { table } Escape special TeX s... www.tablesgenerator.com 맨처음 들어가게

Naver Blog

[overleaf] table, figure 내가 원하는 자리에 배치하기

How to fix the table position in overleaf. ️ overleaf로 table 만드는 방법 [overleaf] table 만들기 (feat.multirow) overleaf로 table만들기는 복잡하다. 더 정확하게 말하면, 귀찮다... 왜냐하면, 표를 만들어주는 형식을 내... blog.naver.com 이렇게 overleaf 로 table을 만들어서, 넣어보면 다음과 같이 표가 들어가게 된다. 참고로 내가 사용한 표의 코드는 다음과 같다. \begin{table}[] \begin{tabular}{lll} & acc & f1 \\ 1 & 0 & 0 \\ 2 & 0.5 & 0.3 \end{tabular} \caption{please write caption in here} \label{tab:my-table} \end{table} 내가 원하는 자리는 이 부분이 아님에도 불구하고, 가장 상단에 표가 들어가게 된다. (현재 나는 하단에 들어가길 원하는 상황

Naver Blog

[연회비 할인]대한항공 마일리지 적립 신용카드 추천(가입시 최소 8천 마일리지 적립)

오늘은 제가 이번에 새로 발급받은 대한항공 마일리지 적립되는 신용카드를 추천드리려고 합니다~! 제가 발급받은 카드는 바로 현대카드에서 나온 대한항공 카드 인데요. 아래 링크로 가입하시면 연회비 3만원이 할인되는 이벤트가 있어서 소개해드리려고 해요. 현대카드 | 중도이탈 시 링크 재접속 필수 라이프 스타일에 맞춰 카드를 선택해 보세요 가벼운 연회비로 마일리지에 집중 030 카드 실속있게 라운지 혜택까지 070 카드 강력한 적립률에 항공/면세 할인까지 150 카드 대한항공 우수회원용 프리미엄 혜택 the First 카드 대한항공카드 더 알아보기 01 대한항공카드의 강력한 마일리지 혜택 02 소수점 마일리지도 챙겨주는 대한항공카드 03 나에게 맞는 대한항공카드 찾아보기 04 직원들에게 직접 듣는 Inside 대한항공! 유의사항 연회비 : 대한항공카드 030 (3만원), 070(7만원), 150(15만원), the First... www.hyundaicard.com 1. 대한항공 마일리지

Naver Blog

[overleaf] latex(수식) 넣기

overleaf 에 수식을 넣는 방법은 간단하다. 1. 인라인에 넣기 (inline) 글을 쓰다보면, 수식 기호를 지칭하는 경우가 종종 있다. 이럴 때 $와 $ 로 수식 기호를 감싸주면 된다. If you want to add latex in inline, $y = 2x$ 2. 블럭으로 넣기 위처럼 글 쓰다가 중간에 넣는게 아닌, 수식 자리를 블럭으로 필요로 하는 경우도 있다. 이럴 때는 아래처럼 진행하면 된다. \begin{equation} h = Wx+b \end{equation} 만약, 수식의 라벨을 붙여서 나중에 이 수식을 reference 하고 싶다면, 아래와 같이 \label을 넣어서 붙여주면 된다. \begin{equation}\label{eq:라벨 이름} h = Wx+b \end{equation} 수식에 라벨 붙여서 언급하는 방법은 아래 그림과 같다.

Naver Blog

Anonymous caller does not have storage.objects.list access to the Google Cloud Storage bucket.

오늘의 에러 ServiceException: 401 Anonymous caller does not have storage.objects.list access to the Google Cloud Storage bucket. 발생 원인 google cloud에 login이 안되어 있어서 발생한 것으로, 다시 로그인을 해주면 해결된다 ㅎ 해결 방안 $ gsutil config 위의 코드를 입력한다. 나의 경우에는 아래와 같은 문구가 나왔다. CommandException: OAuth2 is the preferred authentication mechanism with the Cloud SDK. Run "gcloud auth login" to configure authentication, unless: - You don't want gsutil to use OAuth2 credentials from the Cloud SDK, but instead want to manage credentia

Naver Blog

[python] colab 에서 .py 파일 import 하기

구글 colab은 무료로 GPU 머신을 사용할 수 있다는 장점이 있습니다. 이런 장점을 가진 colab에 내가 만든 python 파일을 사용할 수 있다는 점 알고 계셨나요? 예를 들어, 제가 myfile.py 이라는 파일을 만들었다고 가정해보겠습니다. 코랩에서 이를 사용하고 싶다면, 즉 import 하고 싶다면 어떻게 하면 될까요? 방법은 아래와 같습니다. google colab에 google drive mount 하기 코랩에 구글 드라이브를 연결시킨다고 생각하시면 됩니다. 아래 코드만 실행시키면 됩니다 from google.colab import drive drive.mount('/content/drive/') * 위의 코드를 실행시키면, 아래 www.~~~ 주소가 뜨면서 code를 입력하라고 요청할 텐데요. * 해당 주소에 들어가셔서 본인 구글 계정을 연결하는 작업을 거쳐주시면 됩니다. 2. 내가 import 하고자 하는 파일이 담긴 경로를 넣어주기 아래 예시 처럼 넣어주시면 되

Naver Blog

주간일기 챌린지 1회차

별일없이 지나간 일주일 서울대입구에서 저녁을 먹었는데, 우연히 들어간 가게 음식이 맛있었다. 가게 이름은 함바그동스미비 소바에 떡갈비가 올라가는데, 안어울리는 듯 하면서 어울리더라. 소바 대신에 밥을 고를 수도 있는데, 밥은 고기가 두 덩이가 올라간다. 함바그동 스미비 서울특별시 관악구 남부순환로230길 31 걷다가 디저트 가게를 찾는데 서울대입구에서 겨우 찾았다... 가게 이름은 안녕과자점 까눌레 성애자로서 까눌레를 3개 샀는데, 맛은 그저 그랬다(그래놓고 잘먹음ㅋㅋ) 난 좀더 빠쟉한 까눌레가 취향이라 그런듯. 휘낭시에도 맛있었다!! Previous image Next image 안녕과자점 서울특별시 관악구 남부순환로228길 20 1층 안녕과자점 밤에 한강은 처음인데 왜 다들 가려는지 알겠더라. 생각보다 밤 한강 좋더라. 한강에서 빠질 수 없는 라면도 먹어주고! 힐링하고 왔다. Previous image Next image

Naver Blog

2회차

Previous image Next image 짬내서 갔던 서원안길. 카푸치노에 시나몬을 내가 원하는 대로 듬뿍 뿌려 먹을 수 있어서 좋았다 저녁 늦게 가니까 사람도 없어서 드디어 1층에 앉아본 날..! 서원안길 인천광역시 서구 원당대로608번안길 14 Previous image Next image 서울숲에 사라졌던 엔디디가 다시 오픈했다. 회사 출근한 김에 점심먹고 들린곳! 엔디디는 자두가 최고다...!!! 메뉴는 매일 바뀜 ㅎ Previous image Next image 그리고... 카멜커피 오후 5시에? 가도 사람이 많았고, 착석은 대기까지 해야했다... 포장하면 바로 주문할 수 있었다. 생각보다 작았고, 맛은 고소했다! 담에는 빵도 먹어야지 카멜커피 7호점 서울특별시 성동구 서울숲7길 4 카멜커피

Naver Blog

3회차

퍼스널 컬러를 드디어 받았다. 봄 아님 여름 이지 않을까 했는데, 왠걸...; 가을딥;; ㅋㅋㅋㅋㅋㅋ 그래도 은근히 가을에 맞는 색조가 있어서 다행이었다. 컬러가산다 서울특별시 마포구 연남로 4-1 3층 고양 스타필드가서 먹은 것들... 훠궈야 랑 무슨 카펜데, 분위기 좋더라! 커피는 그저그랬고, 먹고싶었던 빵들이 많았지만... 배불러서 먹지는 않았다. 이날 사실 렌즈가 눈에서 찢어져서 당황했지만, 운전해야해서 억지로 끼고 갓더니 저녁 내내 눈이 아팠다 ㅠ 이날 이후로 여분 렌즈 꼭 들고 다니기로 마음 먹었다... 훠궈야 스타필드고양점 경기도 고양시 덕양구 고양대로 1955 1층

Naver Blog

4회차

이번주는 별거없이 보낸 주. 유난히 비가 왔고, 무더웠다 뱅크샐러드에서 신청한 유전자검사 결과가 나왔다 ㅋㅋㅋ 생각보다 괜찮은 유전자를 가지고 있더라 쫌 의외옸음 ㅎ 중화카츠 서울특별시 성동구 서울숲2길 46-10 1층 궁금했던 중화카츠에 가봄 매콤한게 의외로 돈가스랑 어울리더라! 한번쯤은 가볼만 한 곳인거 같다 단일서울 서울특별시 성동구 왕십리로 66-33 1층 숨겨진 커피 맛집 인스타 갬성 스러우면서 커피맛은 놓치지 않은 곳. 티라미수도 맛있더라! 뭔가 많이 먹고 다닌 일주일이군...ㅋㅋㅋㅎ

Naver Blog

[sql] double colon in sql

sql에서 double colon(::)이 적혀있는 코드를 볼 때가 있다. 처음 보는 부분이라 좀 많이 당황했는데 구글링을 통해서 답을 찾을 수 있었다. 정의 It is a CAST operation(cast to a SOME type). 즉, 타입을 변환시켜주는 기능을 한다고 한다. 사용 예시 SELECT price::float 이렇게 위처럼 쓰인 경우는 무엇을 의미할까? price라는 변수를 float type으로 (정수형) 변환시킨다는 의미를 가진다. SELECT now()::timestamp(0) 이렇게 위처럼 쓰인 경우에는 now()를 timestamp(0)으로 변환한다는 의미를 가진다. 위의 식은 아래와 같이 변환할 수 있으며, 그 의미는 아래와 같다. SELECT CAST (now() AS timestamp(0)); reference Value Expressions Value expressions are used in a variety of contexts, such a

Naver Blog

[torch] torch.sparse_coo_tensor 알아보기 feat. Coordinate format (COO format)

우연히 open source code를 보다가 torch.sparse.FloatTensor 를 보게 되었는데 도통 검색해도 무슨 뜻인지 이해하기 어려웠다. 다행이도 구글에는 없는게 없었고, 겨우겨우 이해하게 되었는데, 미래의 나를 위하여 정리한다. torch를 통해 sparse를 만들때 torch.sparse_coo_tensor 를 사용하게 된다. torch.sparse.FloatTensor는 나중에 사라질 수도 있다고 적혀있으니 sparse_coo_tensor를 사용하자 (사실 둘다 하는 역할과 결과는 같다) Pytorch의 공식 문서에 따르면 torch.sparse.FloatTensor / torch.sparse_coo_tensor 의 정의는 다음과 같다. PyTorch implements the so-called Coordinate format, or COO format, as one of the storage formats for implementing sparse tenso

Naver Blog

[서울 레스토랑] 한강뷰 레스토랑 63빌딩 워킹온더클라우드

오늘은 워킹온더클라우드 식당 리뷰를 해보려고 한다. 식당 가는 방법 : 별관에서 내렸다면, 엘리베이터를 타고 1층으로 간다. 1층에서 걷다보면 아래 그림과 같은 표지판을 볼 수 있는데, 이 표지판을 따라서 가면 식당에 갈 수 있다. Previous image Next image 저희는 저녁 코스로 방문했고, 식사 시간은 오후 5시 부터였는데, 미리 올라가서 기다려도 괜찮았다. 일찍 오면 5시 코스의 경우 4시 45분 부터 입장을 시작했다. Previous image Next image 우리가 시킨 코스는 쉐프 코스 하나 아래 Sol 코스였고, 음식을 이렇게 준비될 예정이다. 일찍 가서 그런지 뷰가 좋은 곳에 앉은 느낌이 들었지만, 창가자리면 모두 뷰가 좋은것 같았다 ㅋㅋㅋㅎ 가장 특이했던건, 마스크 넣는 봉지를 주신다는 점인데 너무 센스있다고 생각했다. Previous image Next image 코스에 포함된 와인과 식전빵으로 본격적인 식사 시작. 저 동글동글한 빵이 진짜 맛있다

Naver Blog

이번주 먹부림

오랜만에 시켜먹은 족발 배달 족발 중에서는 여기가 진짜 찐 맛집이다. 친절하시고 너무너무 맛있음 ㅠㅠ 완정역 족발집으로 미쓰족발 추천 미쓰족발 인천당하점 인천광역시 서구 청마로 166 204호 Previous image Next image 오랜만에 파스타를 먹었다 ㅎ 잠실에 있는 더 이탈리안 클럽 이라는 가게 메뉴는 순서대로 아래와 같다. 소고기 안심 타르타르 바질과 피스타치오가 들어간 pasta verda 화이트 라구 파스타인 Ragu bianco con il cognac 돼지 오겹살 Pancetta grigliata 감자튀김 전체적인 맛이 조금 많이 짜고, 화이트 라구 파스타는 좀 느끼했지만, 트러플 맛은 아주 제대로 느낄 수 있었음 ㅎ 그래도 가게 분위기는 이뻤음. 더 이탈리안 클럽 서울특별시 송파구 잠실로 209 KT송파타워 2층 더 이탈리안 클럽 점심 식사를 마치고 바로 아래에 있는 젤라또 가게에 들어갔다 Previous image Next image 화이트 코코넛이랑 자두

Naver Blog

[카페] 분위기 좋은 연희동 카페 애니브

친구랑 우연히 연희동을 걷다가 발견한 카페 애니브 유난히 비가 많이 내리던 날인데, 외관이 너무 이뻐서 홀리듯이 들어갔다. (비가 유난히 와서 외관 사진은 쫌 아쉽당) Previous image Next image 좌석은 그다지 많지 않았고, 내부도 화이트 톤으로 매우 깔끔한 편! 베이커리 카페라서 그런지 음료는 매우 간단했다. 달달한 케익을 먹을꺼라 그냥 아이스 아메리카노 주문했다. 이집의 메인은 역시 케익인데...!! 비주얼이 진짜 미쳤다. 카페에서 먹는 그런 케익 비주얼이 아니라 고오급 케익이다. Previous image Next image 비오고 평일 오후 4시쯤 방문했더니 남은 케익은 별로 없었다. 우리는 여기서 "누아" 라는 케익을 주문했다. 아, 케익 말고 구움과자류도 팔았다. 여기서 오렌지 까눌레도 주문했다. 주문한 음식 비주얼~! Previous image Next image 맛을 평가하자면,,, 진짜 너무 맛있다. 누오 케익은 초콜릿 중에서 페레로로쉐 와 매우 흡

Naver Blog

[술집] 연희동 로컬 철판 요리 맛집 사월

연희동에 숨겨져 있는 맛집을 소개한다. 진짜 로컬만 아는 그런 장손데 더 널리널 퍼졌으면 좋겠는 마음에 공개..! 바로 연희동 사월 이라는 가게다. 휴무일 : 매주 수요일 영업 시간 : 17:00 - 23:00 기본 셋팅은 깔끔한 편 메뉴는 다음과 같다. Previous image Next image 이 가게의 특별한 점은 바로 릴레이 일기장 이다. 누군가가 질문을 남겨뒀고 이 질문에 대한 답을 다음 손님이 해주는 시스템! 그리고, 그 손님은 본인이 가지고 있는 질문을 또 다시 남긴다. 나도 친구랑 같이 답변을 해주고, 질문을 적었었다. 일기장이 특이한게 낯선 사람에게 물어보는 것일 텐데도 다들 진지한 고민을 많이 적어서 놀랐었다. 아래 사진 처럼 주방도 너무 깔끔하고, 오픈형이라서 더 믿음직 스러웠다.! 우리가 주문한 메뉴가 철판에서 만들어지는중...~~ Previous image Next image 주문한 메뉴는 다음과 같다. 순서대로 야끼 파스타 구운 주먹밥 흑돼지 목살 스테이

Naver Blog

[멕시칸 음식] 연남동 타코 맛집 멕시칸식당 베르데

연남동에 생긴 멕시칸 음식점인 "멕시칸식당 베르데"를 소개한다. 필자는 멕시코 음식을 유난히 좋아하는 편인데, 연남동에서는 정통 멕시칸 음식을 찾기 어려웠는데 이 가게를 만나고 생각이 바꼈다...! 식당의 외관과 내부 테이블은 7개 이상 있었고, 4인석이 많아서 4인이상 오는 것도 추천 Previous image Next image 메뉴는 아래와 같다. Previous image Next image 저는 2인 퀘사디아 세트를 주문했어요. 타코는 새우로 변경했고, 퀘사디아는 치킨으로 했어요~ 가장 처음에 기본으로 제공되는 나초와 칠리 소스 칠리소스가 진짜 정통이었고, 기본 나초만 해도 맛있음...️ 다음으로 나온 grilled shrimp 그릴에 구운 새우 타코 새우는 아래에 숨겨져 있었습니다 ㅋㅋㅋㅎ 2-3마리 정도 있었던것 같아요. 다음은 타코 샐러드 & 칠리 콘 카르네 이 음식은 비주얼부터 압도적인데, 안에 야채가 가득가득 들어가 있어서 너무 맛있었던 메뉴에요. 먹는 방법 : 겉

Naver Blog

[python] dict.fromkeys() 사용법 및 주의 사항 feat. 모든 key에 값이 다 들어갈 때

python list to dictionary key 파이썬에서 list의 항목들을 dictionary 의 key로 변환하는 가장 빠른 방법은 fromkeys 함수를 사용하는 것 일것이다. 사용 예제는 다음과 같다. category_per_sent = dict.fromkeys([2,3,4], list()) print(category_per_sent) [2, 3, 4]를 dictionary key로 변환해주고, 그 value에는 빈 list를 넣어줬다. print의 결과는 다음과 같다. {2: [], 3: [], 4: []} 여기까지는 잘 된것 처럼 보인다. 그럼 이제 value에 있는 list에 값을 하나 추가해보자. category_per_sent[2] += [1] print(category_per_sent) 이때 우리가 바라는 결과값은 아래 표와 같을 것이다. KEY Value 2 [1] 3 [] 4 [] print를 찍어보자 print(category_per_sent) # {2

Naver Blog

[torch] IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1)

오늘의 에러 IndexError: Dimension out of range (expected to be in range of [-1, 0], but got 1) 발생 위치 torch의 crossentorpy loss에 predict와 target을 넣는 부분에서 발생 output = model(x) loss = criterion(output, target) # <- 여기서 발생 발생 원인 predict의 shape이 torch의 crossentropy 에서 요구하는 것과 맞지 않았음.. 해결 방법 torch에서는 아주 정확하게 input과 (=위 코드에서는 output) target의 shape의 명시하고 있다. document CrossEntropyLoss — PyTorch 1.12 documentation The input is expected to contain raw, unnormalized scores for each class. input has to be a Tensor

Naver Blog

[맛집] 포천 장인더 주말/연휴 방문 후기

지난 주말에 연휴가 추가된 주말에 포천 장인더를 방문한 후기 장인더 오픈 시간은 10시! 우린 그 전에 오픈런 하기 위하여 9:30 까지는 무조건 간다는 마음으로 출발했다... 포천 장인더 주차장은 큰듯 작다. 주차장 입구에 차를 대면 이런 뷰를 볼 수 있는데, 여기서 웨이팅하는 입구는 사진에서 오른쪽에 있는 잔디로 가면 된다. 위의 사진이 오른쪽에 있는 잔디 모습 차가 안막혀서 9:29분쯤? 도착했었고 앞에 사람들이 10팀이상 있었다... 도대체 다들 얼마나 빨리온것인가... 위 사진은 장인더 입구~ 10시가 알려진 오픈시간이지만, 실제로는 그보다 빨리 9시 50분? 쯤에 여는것 같다. 위 사진을 10:01 에 찍었더라! 내부는 생각보다 자리가 많았고, 10팀 정도는 앉을 수 있는듯 그냥 우리는 나갈꺼니까 앉지는 않았다! 이날도 정약과는 품절이였고, 파지약과 가격은 5500원 약과빵은 3800원 이다 Previous image Next image 약과 개수 제한 및 카페 메뉴는 다

Naver Blog

[ubuntu] login banner 설정하기(feat. issue.net motd)

motd : 로그인이 성공하고서 나타나는 메세지 (telnet , SSH) issue.net : 로그인 시도시 나타나는 메세지 (telnet, 추가 설정시 SSH 도 가능) 공통적으로 저장 시도시 'readonly' option is set (add ! to override) 라는 문구가 뜬다면, sudo vi /etc/motd 이런 식으로 앞에 sudo 를 붙이거나 su 명령어로 root로 권한을 바꿔서 시도하기 motd 설정 vi /etc/motd 본인이 원하는 메세지 입력 issue.net 설정 vi /etc/issue.net 본인이 원하는 메세지 입력 2. vi /etc/ssh/sshd_config 3. Banner /etc/issue.net 4. service ssh restart 만약 CentOS 라면, service sshd restart Reference 리눅스 sshd 재시작 - 제타위키 목차 1 개요 2 우분투 3 CentOS 4 같이 보기 5 참고 1 개요 리눅스

Naver Blog

/usr/bin/python3: No module named pip 해결하기

문제 상황 terminal command 로 pip를 쳤을 때, 아래 에러가 발생 /usr/bin/python3: No module named pip 해결방안 sudo apt-get install python3-pip 발생 원인 pip 가 없어서 발생하는 것으로, 설치해주면 해결된다

Naver Blog

huggingface dataset read error

에러 : FileNotFoundError: Couldn't find a dataset script at /home/jovyan/cheese/contextual-corr-analysis/mozilla-foundation/common_voice_13_0/common_voice_13_0.py or any data file in the same directory. Couldn't find 'mozilla-foundation/common_voice_13_0' on the Hugging Face Hub either: FileNotFoundError: Dataset 'mozilla-foundation/common_voice_13_0' doesn't exist on the Hub. If the repo is private or gated, make sure to log in with `huggingface-cli login`. 문제 원인 : 해당 데이터셋을 사용하려면 허깅페이스에 로그인 하고, 접

Naver Blog

파리바게트 춘식이 런치 쿨링백 후기

파리바게트 춘식이 런치 쿨링백 후기! Intro: 파리바게트에서 5월 26일 부터 빵 2 만원 구매시 4,900원에 구매가능한 춘식이 런치 쿨링백을 출시했어요! 아쉽게도 선착순 구매여서 매장 재고 상황에 따라 구매가능 여부를 여쭤보고 파리바게트로 가야합니다..ㅠ 저는 집 근처 파바에서 우연히 아래 사진처럼 여전히 쿨링백을 팔고 있는 것을 확인하고, 6월 10일에 구매했어요! - 꿀팁) 판매하고 있는 경우에는 아래 사진처럼 춘식이 쿨링백 4,900원 이라는 포스터를 붙이고 있어요. 뒤늦게라도 구매하고 싶으신 분은 근처 파바에 전화해보시는게 좋을 것 같습니다~! 아직 한개 남은 춘식이...️ Review: 자 그럼 제품 리뷰 해볼게요~! 위 색상이 가장 비슷하게 나왔어요! 참고 부탁드립니다. 크기는 가로 23cm * 세로 13cm * 높이 25cm 으로 일반적인 1 인 도시락 보냉백 치고는 큰 크기를 가져요. 쿨링백의 내부는 아래 사진처럼 세로가 넓직해서 일반적인 도시락통이 다 들어갈

Naver Blog

[쇼룸] 뚝섬/서울숲/성수 슬로우앤드 쇼룸 - 하우스앤드 성수 평일 방문 후기

무더운 7월에 오픈한 슬로우앤드 쇼룸 방문 후기 뚝섬역에서 10분 정도에 위치한 슬로우앤드 쇼룸 - houseand(하우스앤드) 가 오픈했다. 주소 : 서울시 성동구 성수동2가 284-98 시간 : 13:00 ~ 20:00 휴무 : 월, 화 인스타 : https://instagram.com/slow.and.house?igshid=MzRlODBiNWFlZA== 슬로우앤드 쇼룸, 하우스앤드(@slow.and.house) • Instagram 사진 및 동영상 팔로워 2,238명, 팔로잉 1명, 게시물 2개 - 슬로우앤드 쇼룸, 하우스앤드(@slow.and.house)님의 Instagram 사진 및 동영상 보기 instagram.com Previous image Next image 외부는 흰색과 짙은 고동색을 적절히 배치했고, 고동색에 잘어울리는 그린을 넣어서 슬로우앤드의 분위기를 한껏 살렸다. 외부부터 보이는 마네킹의 착장에서 부터 슬로우앤드 사이트에 방문한 것 같았다. 7월 7일 쇼룸

Naver Blog

[빵집] 광안리/남천동 부산 3대빵집 서희와제과 주말 오픈런 후기(+ 서희와제과 v. 희와제과 비교)

비가 엄청오던 7월에 방문한 서희와제과 후기 주소 : 부산 수영구 광남로 89 1층 영업시간 : 오전 11시 ~ 오후 7시 휴무 : 월, 화 (마지막 주는 월, 화, 수) 인스타 주소 : https://instagram.com/seohwa.bread?igshid=MzRlODBiNWFlZA== 서희와제과(@seohwa.bread) • Instagram 사진 및 동영상 팔로워 5,549명, 팔로잉 10명, 게시물 16개 - 서희와제과(@seohwa.bread)님의 Instagram 사진 및 동영상 보기 instagram.com 서희와제과는 원래 부산 서면/전포에 위치한 “희와제과”의 두번째 브랜드에요. 이전에 방문한 희와제과에서 너무 맛있었던 기억으로 가득해서 두번째 가게가 유명해지기 전에 바로 방문한 후기를 작성해요 ️ 서희와제과의 대문! 비가 오는날에 방문했습니다...️ 방문한 시간과 대기 정도는 글 가장 마지막에 적어둘게요. 희와제과에서도 빵을 위생장갑을 끼고 쟁반에 담았는데, 서

Naver Blog

[맛집] 부산 기장 한정식 맛집 고슬고슬 가마솥밥 주말 점심 방문 후기

부산 기장에 위치한 한정식 및 솥밥을 먹을 수 있었던 “고슬고슬 가마솥밥” 에 대한 후기 입니다.️ 주소 : 부산 기장군 기장읍 기장해안로 236 1층 영업시간 : 평일 - 08:30 ~ 21:00 주말 - 08:30 ~ 21:00 (16:00 ~ 17:00 브레이크 타임) 휴무 : 없음 주차장 : 있음 ( 주차장 후기는 글 하단에 꿀팁과 같이 적어둘게요.) 고슬고슬 가마솥밥의 메뉴 입니다~ 대표적인 메뉴로 “톳 & 홍합밥 정식” , “쭈꾸미판 정식”, “불고기 정식”, “고등어 조림 정식”, “가자미 조림 정식”, “생선구이 정식” 이 있어요. 저희는 여기서 “쭈꾸미판 정식”, “고등어조림 정식”, “생선구이 정식” 을 시켰어요. 주문시 유의사항입니다! 1인 1메뉴를 원칙으로 하기 때문에, 방문하신 인원수에 맞춰서 주문을 하셔야 해요. 어린 아이의 경우에는 나이에 따라 달라지는데요. 초등학교 이상의 어린아이의 경우에는 1인 1메뉴이고, 미취학 아동인 경우에는 2인 1식이라 합니다!

Naver Blog

[맛집] 부산 해운대/달맞이길 해운대기와집대구탕 (주말 웨이팅 없이 방문 꿀팁) 대구탕 맛집

해운대기와집대구탕 주소 : 부산 해운대구 달맞이길104번길 46 영업시간 : 08:00 ~ 21:00 휴무 : 없음 주차장 : 있음 부산 해운대에 위치한 대구탕 맛집, “해운대기와집대구탕” 방문 후기 에요. 달맞이길에 있어서 교통의 편의성은 낮지만, 차를 빌렸거나, 자차를 보유하신 분들이라면 꼭 방문해야할 맛집 중 하나죠! 저는 운 좋게 주말에 웨이팅 없이 이 집을 방문했는데요. 그 꿀팁은 글 하단에 적어둘게요~ Previous image Next image 해운대기와집대구탕은 말그대로, 기와집 처럼 한옥 모양을 가진다. 가게에 사람이 정말 많이 방문하는지 방이 3개나 된다. “사랑채”, “안채”, “별채” 저는 이중에서 “별채”에 안내받았어요. 특이하게 20시 이후에는 선불로 계산하신다고 한다. 그리고 메뉴는 단일 메뉴로 대구탕 하나만 판매하며, 가격은 14,000원. 솔직히 대구탕 치고 싼 가격은 아니다. 별채에 안내받았음에도 불구하고, 벽에 연예인들의 사인이 한가득 한 것을 확

Naver Blog

[맛집] 부산 기장 형제가든 (feat. 애견동반 가능) 기장 한우 맛집

기장에서 고기 먹고 싶을 때 방문하는 형제가든 후기 주소 : 부산 기장군 철마면 석길길 16-6 형제정육점 영업시간 : 매일 11:00 ~ 21:00 인스타 주소 : https://instagram.com/bro_garden?igshid=MzRlODBiNWFlZA== 형제가든(@bro_garden) • Instagram 사진 및 동영상 팔로워 4,327명, 팔로잉 2,629명, 게시물 1,172개 - 형제가든(@bro_garden)님의 Instagram 사진 및 동영상 보기 instagram.com 형제가든은 한우로 이름난 철마 지역에서 20년간 영업해온 음식점으로, 투뿔 한우 암소만 취급한다고 해요. 주차장도 아주 넓어서 주차 걱정은 없었어요. Previous image Next image 형제가든은 이름답게 넓은 정원을 가지고 있어요. 독특하게도 보이는 기와집이 모두 고기를 먹을 수 있는 장소입니다 약간 시골에 온 것 같은 느낌을 받을 수 있지만, 기장에서는 바다밖에 안보이는데

Naver Blog

[맛집] 쎄콩데 라이브(쎄콩데 live) 브런치 맛집 점심 방문 후기

평일 점심에 방문한 쎄콩데 live 후기 주소 : 서울 성동구 서울숲2길 34 2층 영업시간 : 11:00 ~ 20:00 휴무 : 없음 쎄콩데 live 는 서울숲에서 브런치를 즐길 수 있는 몇 안되는 식당이에요. 통창 뷰를 가지고 있어서 서울숲에서 가장 핫한 거리를 한눈에 즐길 수 있어요. Previous image Next image 자리도 넉넉한 편이라 좋았어요. 다만, 제가 방문했을 때는 웨이팅이 없어서 바로 들어갔습니다. 원래는 점심에 웨이팅이 있기도 하니, 네이버 예약을 통해서 미리 예약하고 방문하시면 웨이팅 피해서 방문 가능합니다 ️ 하지만, 당일 예약은 안된다는 점!! 이점 유념해서 예약하시길 바라요. 예약 사이트 ️ https://m.booking.naver.com/booking/6/bizes/589799/items/4294627?area=plt 네이버 예약 :: 테이블 예약 쎄콩데의 특별한 미식 경험을 즐겨보세요. 2인,4인 테이블부터 최대 14인의 빅테이블까지 다양

Naver Blog

[카페] 파주 운정 오누테 (ONUTE) 타르트 디저트 맛집 파주 카페

파주에서 맛있는 구움과자, 타르트 디저트 류를 먹고 싶을 때 방문하는 오누테 후기 주소 : 경기 파주시 가람로21번길 38 1층 영업시간 : 10:00 ~ 22:00 휴무 : 월, 화 인스타 : https://instagram.com/onutable?igshid=MzRlODBiNWFlZA== 오누테 ONUTE(@onutable) • Instagram 사진 및 동영상 팔로워 3,662명, 팔로잉 360명, 게시물 1,037개 - 오누테 ONUTE(@onutable)님의 Instagram 사진 및 동영상 보기 instagram.com 오누테는 타르트, 생과일 케이크, 구움과자 등 디저트 로 유명합니다. Previous image Next image 오누테는 파주 운정에 위치한 카페로, 다양한 디저트와 음료를 판매해요. 외관도 우디하게 만들어서 부드러운 인상을 주고, 야외 자리도 준비되어 있어서 날씨가 풀리면 앉아서 이야기 하기 딱 좋았아요. Previous image Next image

Naver Blog

[후기] 한양밀떡 사러 공장 방문한 후기

떡볶이에 꽤나 진심인 나는 떡볶이에 들어갈 떡을 마트에서 사면 항상 부족하다 생각했었다. 그래서 유튜브나 블로그를 찾아보니 판밀떡을 사면 정말 맛있다구 하는 말을 접수...! 추가 정보로는 인천 3 대장 떡볶이 집에서도 이 한양 밀떡을 사용해서 만든다는 이야기를 찾았고, 기타 다른 떡볶이 맛집들에서도 많이 쓴더고 하더라.. 그래서 더더욱 한양밀떡을 구매해야겠다고 생각했다! 그래서.. 파주로 고고! 생각보다 정말 외진 곳에 위치하던 한양식품.. 이곳의 대표 상품은 숏다리가 있다! 근데 숏다리가 공장 직매입으로 구매가 가능한지는 모르겠다. 무튼, 난 여기서 “판밀떡” 을 사러 왔다. 영롱한 판밀떡의 자태... 판밀떡 구매방법은 글 하단에 적어두겠다. 갓 만든 떡이라 그런가 정말 뜨끈해서 차 트렁크에 싣을때 데이는 줄 알았다. 날이 덥다보니 혹시라도 떡이 상할 까봐 아이스박스에 떡을 넣어서 집으로 왔다. 진짜 갓 나온 떡이라서 집까지 오는데 40분? 정도 걸렸지만, 전혀 식지 않았고 그저

Naver Blog

[맛집] 운정/가람마을 다미초밥 가성비 초밥맛집 돈까스 냉모밀 현지인추천

운정에서 초밥 먹고 싶을 때 방문하면 좋을 다미초밥 방문 후기 주소 : 경기도 파주시 가람로 21번길 52-11 영업시간 : 11:30 ~ 22:00 휴무 : 화요일 다미초밥의 돈까스는 수제로 만들어진다고 해요. 자리는 넉넉한 편이였고, 점심시간이 지난 시간이였지만 빈자리가 없을 정도로 가득찬 공간이였어요. Previous image Next image 메뉴는 다음과 같습니다. 주말에도 세트 메뉴가 가능해서 저렴하게 초밥을 즐길 수 있다는게 큰 장점이였어요. 저희는 여기서 "다미세트" 와 "냉모밀 세트 A" 를 주문했어요. 주문을 하면, 주방장님께서 신선한 식재료들로 초밥을 만들어주셔요~ 뒷편에서는 돈까스나 냉모밀 같은 요리를 해주셨어요. 오픈 키친이라 믿고 먹을 수 있다는게 큰 장점이였어요 저희가 시킨 메뉴가 나왔어요. 위에부터 "냉모밀 세트 A", 그리고 "다미세트"에요. 다미세트에 원래 우동도 나오는데 조금 늦게 나오느라 같이 사진찍지는 못했어요 ㅠㅠ Previous image

Naver Blog

[맛집] 행주산성 한정식 맛집 호박오리구이 고야

부모님이 참 좋아하시던 호박오리구이 고야 방문후기 주소 : 경기도 고양시 덕양구 행주산성로 31 영업시간 : 12:00 ~ 21:00 후뮤 : 없음 고야는 국내산 오리만을 취급한다고 해요. 주차장도 넓직해서, 주차걱정도 없었구요~ Previous image Next image 자리도 꽤나 많은 편이라서 단체 손님도 문제 없었어요! 처음에 방문하면 이렇게 자리가 셋팅되어 있어요 깔끔한 셋팅 ㅎㅎ 고야의 메뉴를 소개합니다. 고야의 가장 대표 메뉴는 ”호박오리구이“ 에요. 호박오리구이는 말그대로 단호박에 오리훈제바베큐를 넣어 구워 만든 요리에요. 그다음으로는 호박이 싫다 하시면 “오리훈제바베큐”를 추천드리고, 만약에 추억돋는 대나무통밥(죽통밥)이 드시고 싶다면, 고기 없이 밥만 시키실 수 있어요. 이 밥도 진짜 진짜 맛있답니다 고야의 차림상을 소개할게요. 밑반찬은 총 7가지로 다양한 반찬이 제공되었어요. 밑 반찬들은 모두 직접 만드시는 것 처럼 보였어요. 반찬 하나하나 다 정성이 가득들

Naver Blog

[카페] 나무휴식 bake29s 고촌 디저트 맛집 애견동반 예스키즈존 숲뷰 카페

김포 고촌에 위치한 애견동반가능 카페 bake29s 를 다녀왔어요. 주소 : 경기 김포시 고촌읍 태리로 121 Bake29s 영업시간 : 10:30 ~ 19:00 휴무 : 매주 화요일 나무휴식은 3가지 공간이 조합된 장소에요. 그중 카페는 “Bake29s”, 애견 동반 가능한 공간은 ”도그플레이 그라운드“, 그리고 공유 스페이스인 ”상원홀“ 로 이뤄져있어요. 나무휴식은 3가지 공간이 조합된 장소로, 그 중 카페는 Bake29s 이에요. 저는 오늘 Bake29s 에 방문했기에 이 장소에 대한 리뷰를 진행할게요. 우선 입구에 들어가면 이정표가 어디로 가야하는지 안내해줘요. 자리를 먼저 잡으시고, 카페에서 주문하시길 추천드려요. 별관에 자리가 생각보다 넉넉하진 않더라구요c Previous image Next image 카페 입구는 이렇게 생겼습니다! 카페는 노키즈 존으로 운영되니, 어린 자녀를 동반하신 분들은 별관에 자리를 잡으시면 돼요️ 카페 바로 옆에는 애견 동반이 가능한 ”도그 플레

Naver Blog

프로티원 초코맛 내돈내산 리뷰 (feat. 셀렉스 프로핏 웨이프로틴)

프로티원 단백질 쉐이크 초코맛 리뷰 시작할게요 프로티원 쉐이크는 초코, 흑임자, 곡물, 녹차 맛으로 구성돼요 프로티원 단백질 쉐이크는 공식 홈페이지에서 구매 가능한데요! 같이 판매하는 보틀도 있어서 단백질 쉐이크를 타먹기 참 좋았어요. 보틀은 아래 사진처럼 BPA Free 제품이라 환경호르몬 의심 없이 사용할 수 있어요. 특히나, -30도 ~ 100도 까지 가능해서 차갑게도 가능하고, 뜨겁게도 가능해서 더 좋았어요 보틀에는 이렇게 눈금표시가 되어 있어요. Strong 은 진하게 먹는 부분으로 150ml 정도를 의미하고, Soft는 연하게 먹는 부분으로 200ml 정도를 의미해요. 저는 사실 200ml 정도 넣어서 주로 먹는 편인데 충분히 진하다고 생각했어요. 여러번 드셔보시면서 선호하는 용량을 선택하시면 될것 같아요! 이제 진짜 프로틴 쉐이크 리뷰를 진행할게요~ 프로티원의 쉐이크 초코맛은 정말 곱디 고운 가루 형식으로 생겼어요. 이 가루가 물에도 정말 잘 섞이는데 아래에서 보여드릴게

Naver Blog

[맛집] 구월동 닭볶음탕 맛집 홍미집

구월동 닭도리탕 맛집 홍미집에 다녀온 후기 주소 : 인천 남동구 인하로507번길 14 1층 104호 영업시간 : 11:00 ~ 23:00 휴무 : 없음 Previous image Next image 홍미집은 구월동에 위치한 닭도리탕 맛집 Previous image Next image 홍미집의 인테리어는 정말 세련되게 생겼어요. 조명과 벽지등이 화려하지만 잘 어울렸고, 모든 자리가 인덕션으로 다 셋팅되어 있어서 어린 아이들과 방문해도 좋을 것 같았습니다.️ Previous image Next image 주류도 셋팅되어 있고, 셀프바가 있어서 원하는 추가 반찬을 리필 하기가 쉬웠어요. 셀프바에 앞치마가 있으니, 필요하신 분들은 미리 챙기시는 센스 홍미집에는 모든 자리마다 주문할 수 있는 테블릿이 놓여있어서 직원분들을 콜하지 않아도 되서 편했어요 ㅎㅎ 그럼 구월동 닭볶음탕 맛집 홍미집의 메뉴판 보여드릴게요~ Previous image Next image 여기 까지가 셋트메뉴! Previ

Naver Blog

스픽 헌드레드 클럽 챌린지 후기 (feat. 200일 이상 사용중!)

스픽 헌드레드 클럽 챌린지 후기 스픽은 헌드레드 클럽 이라는 찐 애청자(?)를 위한 클럽이 있는데요! 스픽을 100일 연속 사용해서 공부하면 헌드레드 클럽이라고 불러요. tmi. 하루는 못들어도 다음날 강의를 2개 들으면 불꽃을 유지해줘요. 하지만, 2번 이상 못들으면 1일부터 초기화 됩니다... 헌드레드 클럽이 되면 위에 있는 사진처럼 헌드레드 클럽과 귀여운 불꽃이가 딱 그려져 있는 티셔츠를 준답니다 ㅎㅎ 기존에는 티셔츠만 제공되던 헌드레드 클럽인데, 이번에 헌드레드 클럽을 위한 챌린지를 열었고, 좋은 기회로 100명뿐인 챌린지에 참가하게 되어서 그 후기를 작성해 봅니다 ㅎㅎ 이번 헌드레드 클럽 챌린지는 10일 챌린지 일정으로 준비됐어요! 8/23 부터 9/1 까지 진행됐고, 챌린지를 마치고 9/2 에는 오드리와의 Live 줌을 진행했어요!! 오드리와의 만남은 밑에서 더 자세히 풀게요c 그 전에 이번 헌드레드 클럽 챌린지에서 나왔던 미션들을 공개합니다 이렇게 챌린지는 담당자님께서

Naver Blog

[맛집] 십정동 통닭맛집 계림원 누룽지통닭구이 동암역점

십정동 통닭 맛집 계림원 동암역점에 방문한 후기 시작할게요 주소 : 인천 부평구 열우물로25번길 10 영업시간 : 17:00 ~ 02:00 (금토일은 03:00 까지) 휴무 : 없음 계림원 동암역점은 동암역 바로 앞 골목에 위치해 있어요 동암역 앞에 위치해 있다보니 접근성이 좋다고 생각해요. 누룽지 통닭을 구울 때 사용하는 장작이 가게 앞에 놓여져 있어서 장작불로 구워서 만드시는 것을 유추해 볼 수 있었어요. 이 장작들 덕분에 장작불에 굽는다고 느껴졌어요 ㅎㅎ 계림원 동암역점의 메뉴판 이에요. 가장 잘나가는 메뉴는 세트메뉴 라고 하시네요 ㅎㅎ 세트메뉴는 "통닭" + "물/비빔국수" 로 구성되어요. 여러분이 원하는 메뉴를 조합해서 선택하면 되는 구조에요. 저는 치즈콘닭 세트메뉴를 선택했어요. "치즈콘닭" + "비빔국수" 각각의 메뉴에 해당되는 사진은 위와 같습니다! 누룽지 통닭이 가장 기본이 되는 통닭이고 콘닭은 누룽지 통닭 + 옥수수콘 조합, 치즈콘닭은 콘닭 + 치즈 가득 조합, 매

1 2 3