Python 11

Google Scholar sort by the Number of Citations

종종 새로운 분야에 대해 공부할 때에, 원문이 되는 논문을 공부한 뒤, 내가 공부하고싶은 파생 논문, 그리고 가장 인기있는 논문에 대해 공부한다. 구글 학술검색에서 기본적으로 앞의 두가지는 잘 검색하면 나오지만, 트렌드를 알기 위해서는 커뮤니티를 잘 뒤지거나, 피인용수와 년도를 비교하며 "트랜디"한 논문을 고른다. 하지만, 구글 학술검색에서는 이 기능을 제공하고 있지 않다. 이러한 검색에 대한 수요가 조금 있는지 아래의 깃헙에서는 검색어를 넣으면 자동으로 정렬해주는 프로그램을 만들어 소개하고 있다. 여기서는 colab으로 들어가서 프로그램 돌리고, .csv 결과 파일을 확인하면 된다. Default 설정으로 검색어 "deep learning", 정렬기준 "citations/years" 로 되어있다. 이 ..

유용한 사이트 2024.04.27

[Python] Jupyter Notebook, Virtual Environment Kernel

Intro가상환경을 사용하여 프로젝트 개발을 하려하는데, 동료에 따라 torch로 하는 경우도 있고 tensorflow로 하는 경우도 있다. 별 신경안쓰다가 torch로 실험하던 환경에서 tensorflow를 실행시켜 프로젝트 진행에 차질이 생긴적이 있었다. 둘 다 되게끔 하려다가 결국 기존의 패키지 버젼이 꼬이고, torch마저 돌아가지 않는 상황이 발생했다... 각각의 프로젝트에서 사용하는 버젼상 진짜로 이렇게도 맞지않는 경우도 있구나 싶다... 그리고 이런 이유에서 가상환경을 쓰는것인데, 나는 왜 알면서 꼭 겪어봐야 제대로 하는지...;; 무튼 이러한 분리된 두가지 프로젝트에서 작업이 가능하도록 쥬피터에서 가상환경의 커널을 연결하도록 하는 코드를 가져왔다. Code예를들어, proj1 이..

정리 조금/Codes 2024.04.24

[Python] ModuleNotFoundError: No module named 'tensorflow.keras'

tensorflow_addons은 tensorflow에서 지원하지 않는 다양한 방법이 들어있다. 이 프로젝트를 활용해야 할 때가 있어 아래와같이 불러오면 import tensorflow as tf import tensorflow_addons as tfa 이런 문제가 발생한다. ModuleNotFoundError: No module named 'tensorflow.keras' 나의 경우 이런 module없음 문제는 아래의 호환되는 짝을 찾아 다시 설치해주면 해결되었다. https://github.com/tensorflow/addons#python-op-compatibility-matrix GitHub - tensorflow/addons: Useful extra functionality for TensorF..

정리 조금/Codes 2024.04.23

parquet

Intro Parquet은 일반적으로 herringbone 스타일 패턴(V shape)으로 짜여진 바닥 나무 블록이다. 컴퓨터, 특히 data science에서 parquet은 종종 코드를 보다보면 데이터 포맷으로 등장하는데, 하둡에서 많이 사용되는 column-oriented 방식으로 압축 및 저장하는 형태이다. 이 방식은 기존의 방식보다 데이터를 효율적으로 처리 가능하다. Google research에서 2010년에 발표된 방법론 , " Dremel: Interactive Analysis of Web-Scale Datasets ", 에 영감을 받았다고 한다. Parquet Row-oriented & Column-oriented Parquet는 column-oriented 방법으로 row-oriente..

Deep Copy & Shallow Copy

Intro 코딩을 하다보면 자주 객체를 복사하게 된다. 그런데 Python에서 가끔 복사 된 객체를 바꾸었더니, 원본도 같이 바뀌는 이상한 현상이 발생하기도 한다. (아래 참고) import copy # 원본 리스트 original_list = [1, 2, [3, 4]] # 복사 copied_list = original_list # 복사본의 수정 copied_list[2].append(5) # 결과 print(original_list) # [1, 2, [3, 4, 5]] print(copied_list) # [1, 2, [3, 4, 5]] 이유는 바로 나도 모르게 Shallow copy를 사용했기 때문이다. Shallow Copy Shallow copy란 원본 객체와 복사본 객체 모두 같은 내부 객체를 ..

[Python] Wallus Operator, :=

Intro Wallus (바다코끼리) 연산자는 바다코끼리를 연상시키는 이모티콘 (:=) 과 같은 모양으로, Python 3.8부터 사용이 가능해졌다. Assign & Return을 한번에 진행하는 기능이 있다. Example Wallus operator는 for문과 주로 같이 사용되는데, 이를 사용하지 않고 3보다 큰 index를 고르는 예제를 코딩하면 아래와 같다. numbers = [1, 2, 3, 4, 5, 6] index = None for i, num in enumerate(numbers): if num > 3: index = i break print("Index without walrus:", index) 반면, wallus operator를 사용하면 아래와 같이 line수가 줄어든다. num..

정리 조금/Codes 2024.02.23

[Python] Image Data, Shape Transformation

CIFAR10 CIFAR10 이미지를 사용하려 이미지를 다운받아 읽어봤는데, plt.imshow(img.astype('uint8')) 아래와 같은 에러가 발생했다. TypeError: Invalid shape (3072,) for image data 우선 CIFAR10은 채널마다 32 $\times$ 32 의 픽셀로 표현되어있는 이미지 자료이다. 때문에 32*32*3=3072의 값이 에러에 보인다. Code 이 문제는 내가 받은 CIFAR10이 32 $\times$ 32 $\times$ 3 이런 모양이 아니라, 3 $\times$ 32 $\times$ 32의 모양으로 제공되기 때문에 발생한다. Torch에서도 이런 식으로 shape을 갖는다. 이 문제를 해결하고자 transpose라는 함수를 사용해 일반..

정리 조금/Codes 2023.12.04

Multiclass Hinge Loss

Intro Computer vision을 위한 딥러닝 - linear classifier chapter를 듣다가, multiclass hinge loss에 대해 알게되었다. Multiclass support vector machine에 사용되는 loss function이라고 하는데, 처음본다. 오늘은 이 내용에 대해 구현해보자. 하나의 이미지당 하나의 객체를 담고있는 CIFAR data를 사용해 보았다. 아무래도 linear classifier는 하나에 여러개의 복잡한 객체를 담고있는 이미지는 학습이 어렵기 때문에, 그리고 강의에서도 CIFAR-10을 사용했어서 해당 데이터셋을 선택했다. Code Library import numpy as np import pandas as pd import matplo..

[Python] Paramiko

Paramiko Paramiko는 Python에서 ssh 접속을 제어 가능하도록 하는 라이브러리로, ssh 원격접속과 파일전송을 가능하게하는 Fabric 라이브러리도 paramiko를 기반으로한다. Fabric의 사용 용도보다 심화된 또는 low level의 코딩을 해야하는 때와, Python 내에서 sshd (ssh daemon) 를 돌릴 때에 paramiko를 직접적으로 사용하게된다. 여기서 daemon은 백그라운드 상 요청을 기다리는 프로세스로, sshd는 ssh 연결을 받아주기 위해 대기하는 프로세스정도로 이해하면 된다. 오늘은 파일을 주고 받는정도의 간단한 코드를 소개한다. Code SSH client를 만들고, 연결한다. # Client class ssh = paramiko.SSHClient(..

정리 조금/Codes 2023.10.25