Showing posts with label python. Show all posts
Showing posts with label python. Show all posts

Tuesday, December 7, 2021

Anaconda를 이용한 파이썬 개발환경 세팅하기

쓸 때만 기억나지 시간 지나면 금방 잊어 버리는 아나콘다 개발환경 세팅하기


1) 가상 환경 생성하기

$ conda create -n [env_name] python=3.7.11 anaconda

(마지막에 anaconda를 붙여주면 아나콘다 기본툴까지 함께 설치됨)


2) 가상 환경 활성화하기

$ conda activate [env_name]

(비활성화 시 deactivate 옵션 사용)


3) 가장 자주 사용하는 파이썬 패키지들 설치하기

$ conda install numpy, scipy, matplotlib, opencv

$ conda install -c conda-forge pyinstaller=4.7

$ conda install -c conda-forge python-pptx

$ conda install -c anaconda openpyxl

$ conda install -c davidbroadhurst csaps

$ conda install -c intel scikit-learn


4) 가상환경 삭제 하기

$ conda remove --name [env_name] -all


Tuesday, March 9, 2021

Tensorflow 텐서플로우 네트워크 중간에서 값 추출하기 or 타일 생성하기

 텐서플로우 네트워크를 디자인 하다보면,

특정 계수를 뽑아 내거나 혹은 타일 형태로 생성하여 다른 입력과 곱해야 할 경우가 생긴다.

이 때, 두 텐서 사이에 크기가 맞지 않으면 연산이 되질 않아 여간 귀찮은게 아님 -_-


아무튼 이럴 때 tf.split과 tf.tile 조합을 통해 원하는 출력을 만들어 낼 수 있다.


예시는 아래를 참조


gain, offset = tf.split(h_linear_4, num_or_size_splits=2, axis=1)

gain_tile = tf.tile(gain, [1, 128 * 128])
gain_tile = tf.reshape(gain_tile, [-1, 128, 128])
gain_tile = tf.expand_dims(gain_tile, axis=3)

offset_tile = tf.tile(offset, [1, 128 * 128])
offset_tile = tf.reshape(offset_tile, [-1, 128, 128])
offset_tile = tf.expand_dims(offset_tile, axis=3)

output = data_pan * gain_tile + offset_tile

Tuesday, January 26, 2021

The Best Way to Learn Python - 파이썬 강좌를 통한 공부 방법

원문 : The Best Way to Learn Python - Tuts+ Code Article(참조를 위해 최소한으로 요약 번역하였으니 원문을 꼭 참조하세요!)
파이썬은 이전보다 더 인기있으며, 백엔드 웹서버에서 프론트엔드 게임 개발까지 어디서나 사용되고 있다. 파이썬은 정말 일반적인 목적의 언어이며 자존심있는 프로그래머의 무기 중 필수 툴이다.

임무 1: 기초에서 시작하라

두 가지 버전의 파이썬이 있다: 파이썬 2.7과 파이썬 3.4. 어느 것을 선택할지는 크게 중요하지 않다. 입문자에게는 특히, 차이점이 미미하다. 알아야 한다면, 파이썬 2는 서드파티 지원이 훨씬, 훨씬 더 많고, 파이썬 3는 언어를 설계하는 것이 개발자들의 주요 초점이다.

Wikibooks’ Non-Programmers Tutorial for Python

위키북스는 새로운 것을 배우는 훌륭한 소스이며, 파이썬도 예외는 아니다. 너무 기술적이지 않고 유용하고 보람있는 무언가를 바로 코딩할 수 있다.

The Official Python Tutorial

python.org의 공식 문서보다 더 나은 정보 소스를 찾을 수 없을 것이다. 그러나, 바로 뛰어들기를 원한다면, 시작하기에 베스트 장소는 아닐 것이다. 위키북스보다 더 기술적이며, 언어를 숙달해갈 때 나중에 도움이 된다.
초보자에게는 파이썬 2와 파이썬 3의 가장 큰 차이점은 파이썬 2는 괄호없이 print를 사용할 수 있고, 파이썬 3는 괄호가 있어야 한다. 그게 다다.

임무 2: 튜토리얼과 스크린 캐스트

TheNewBoston’s Python Programming Tutorials

강사가 재미와 듣기 쉬움을 균형있게 전달한다. 프로그래밍에 지식이 없어도 된다.

Nettuts+’s Python from Scratch

프로그래밍 경험없이도 장고를 이용한 다이내믹 웹사이트를 만들게 해준다.

ShowMeDo’s Python Screencasts

완전초보부터 중급까지의 파이썬 테크닉과 관련된 비디오 카탈로그가 아주 많다.

Build a Python Bot That Can Play Web Games

완전 초보에게 추천하지는 않지만, 언급할만한 가치는 있다. 간단한 게임을 하는 파이썬 봇을 만드는 법을 보여준다. 매일 반복적인 작업에 적용할 수 있다.

임무 3: 무료 e북들!

고퀄의 무료 e북이 넘치고 있고, 아래는 그 중 베스트 목록이다.

Learn Python the Hard Way

이름과 다르게 매우 쉽게 배울 수 있다.

Think Python: How to Think Like a Computer Scientist

부제와 같이 이론적인 면을 강조한다. 완전초보에게는 약간 어렵지만 알고리즘 이론과 고급 개념에 대해 읽을 수 있다.

Invent with Python

배워서 써먹고 싶다면, 게임을 만드는 것이 좋다! 파이썬을 몰랐더라도 이 책으로 게임을 만들 수 있다.

The Django Book

웹 개발을 위해 파이썬을 배우고 싶다면, 장고 프레임워크를 사용할 것이다. 파이썬에 능숙하고 프레임워크에 초보라면 이 책이 장고를 가르쳐 준다.

PythonBooks

난이도와 주제 따른 파이썬 책에 대한 공식 위키. 한글 책도 소개되어 있다.

임무 4: 스택오버플로우와 친해져라

스택오버플로우에 초보자 에러와 문제만 있는 것은 아니다. 예로 Hidden features of Python을 한번 봐라. 정식 튜토리얼에 없는 수많은 팁과 트릭을 볼 수 있으며, 중급에서 고급 파이썬 사용자에 매우 도움되는 것이다.

임무 5: 프로젝트 오일러

Project Euler(오일러로 발음한다)에서 400 문제를 풀 수 있다. 각 문제는 대략 50%의 수학과 50%의 프로그래밍이다.
새로운 문제를 해결하면 포럼 글타래를 볼 수 있다. 이 곳에서 많은 사람들이 서로 자신의 해결책과 아이디어를 토론하고 있다. 글타래의 후반 페이지에 있는 많은 해결책이 파이썬으로 되어 있을 것이다. 이것은 정말 여러분의 프로그래밍 능력을 키우는 열쇠가 될 것이다. 여러분보다 빠른 해결책이 있다면 시간을 내서 분석하라.
파이썬으로 된 프로젝트 오일러 문제에 대한 정말 훌륭한 블로그도 있다. 배우려고 한다면, 문제에 막혀서 다른 프로그래머의 작업을 살짝 엿보는 것을 부끄러워 하지마라.

임무 6: 게임 만들기

게임을 만드는 것보다 더 만족스러운 것이 거의 없다. 가파른 학습 곡선이 될 수 있지만, 할 가치가 있고 매우 보람있다. PyGame은 가장 알려진 파이썬 게임 라이브러리이며, 무료 투토리얼도 많이 발견할 수 있을 것이다. 여기 베스트 PyGame 튜토리얼이 몇 개 있다.

Pygame 공식 문서

오리지널 파이썬 튜토리얼과 같이 PyGame 개발자도 소개 문서가 가지고 있지만 너무 기술적이다. 그러나 개발자 문서는 항상 정보의 베스트 소스가 될 것이다.

Invent With Python (With PyGame)

TheNewBoston’s Computer Game Development Tutorial

위의 가이드와는 다르게 더 요점적이지만 완전한 게임을 만들게 하지는 않는다.

임무 7: 인기 라이브러리와 툴 알기

PyPy

CPU 집중적인 작업을 하려면, 파이썬 자체로는 병목이 생기는 것을 알게되어 아마 PyPy를 필요로 할 것이다. PyPy는 처리속도를 높여줄 수 있는 파이썬의 대체 컴파일러이다.

NumPy + SciPy

보통 이 두개는 나란히 간다(SciPy가 NumPy에 의존한다). 수학적이거나 과학적인 연구를 위한 진지한 계산 처리를 한다면 이 두 개의 라이브러리는 베스트 친구가 될 것이다. NumPy와 SciPy는 파이썬의 수학적인 함수와 능력을 확장해주고 작업들을 엄청나게 가속할 수 있다.

BeautifulSoup

BeautifulSoup은 정말 아름답다. 정보를 얻기위해 HTML 페이지를 긁어야 할 필요가 있다면 가져오는 것이 매우 좌절스럽고 머리를 쥐어뜯는 것이라는 잘 알게 될 것이다. BeautifulSoup이 모든 것을 하고 수명 몇 년을 벌어줄 것이다. 강추한다.

Python Imaging Library

Python Imaging Library (PIL)는 이미지를 다루는 모든 일에 훌륭하다.

Django

웹 개발이 목표라면 장고 프레임워크를 사용하게 될 것이다. 가장 널리 알려진 웹 프레임워크이며 학습 리소스도 가장 많다.

임무 8: 오픈소스 프로젝트에 관여하라

언어를 파악하고나면 다른 사람의 코드를 읽고 이해하는 것이 언제나 중요한 스킬이다 - 말할 것도 없이, 배우는 훌륭한 방법이기도 하다. 오픈소스 프로젝트들이 좋다. 다른 사람이 여러분의 코드를 판단하는 것을 걱정하지마라. 당장 공헌해야할 필요도 없다. 개선할 무언가를 봤다면, 훌륭하다! 개선사항을 제출하라. 오픈소스의 존재 이유이다.

참고 링크

Tuesday, January 5, 2021

Python 개발환경 구축을 위한 virtualenv 사용법

 Python 자체도 버전이 다양하고, 이를 기반으로한 개발 환경 또한 갈래가 다양하다 보니...

새로운 개발 환경을 전부 별개로 구성하기도 여간 번거러운 일이 아닐 수 없다.

이 때 유용하게 사용되는 것이 virtualenv를 이용한 가상 환경인데,

이를 활용할 경우 가상 환경에서 별도로 독립적인 개발 환경을 편하게 구성할 수 있다.

가령 Python2 기반 코드를 작성한다거나 Python3 기반의 코드를 작성한다거나 할 때, 간단하게 그 개발환경 구성을 커맨드 라인 한 줄로 바꿀 수도 있고, 또는 Tensorflow를 사용할 때 GPU 버전이나 CPU 버전에 대해 별도로 구성해서 편하게 사용할 수도 있다.

나의 경우에는 Tensorflow-CPU / Tensorflow-GPU / Pytorch-GPU 버전에 대한 각자 다른 개발 환경을 virtualenv로 구성한 뒤 필요에 따라 번갈아 가면서 사용하고 있다.


이 구성 방법이 그렇게 어려운건 아닌데....

왜이렇게 하려고 할 때마다 기억이 가물가물한지 -_- (이젠 암기력이 바닥을 기는 듯)

이번 기회에 그냥 쭉 적어 놓고 보면서 사용해야 하겠다.


# Virtualenv의 설치

$ pip install virtualenv


# python 3 환경에서의 virtualenv를 사용한 가상환경 꾸미기

$ python3 -m virtualenv pytorch-gpu

$ virtualenv pytorch-gpu --python=python3

$ virtualenv pytorch-gpu --python=python3.6


# 설치된 pytorch-gpu 가상 환경 활성화 시키기

$ source python-gpu/bin/activation

(pytorch-gpu) $


# 가상 환경 활성화 뒤 필요한 라이브러리 설치하기

(pytorch-gpu) $ pip install torch torchvision