728x90

IT 417

[python/Tensorflow1.x] 그래프, 세션의 기초와 디버그 방법 그리고 변수의 기초와 재사용 방법

TensorFlow를 처음 시작하기에는 허들이 꽤 높다. 그러한 허들을 극복하기 위해서는 독특한 개념을 이해할 필요가 있다. 그러한 개념을 간단히 살펴보고자 한다. (그러나 후술할 고수준의 API를 사용하면 어느정도 가볍게 작성할 수 있다. 예를 들어 "심층학습을 간단히 시험해보고 싶다"는 목적의 경우 이러한 API를 사용하는 것을 추천한다.) TensorFlow 최초의 허들 TensorFlow의 최초로 맞닥뜨리게 되는 장애물은 아래의 두 가지라고 생각된다. 그래프와 세션 변수를 다루는 방법 이것들은 독자적인 형태로 맨 처음 봤을 때 반드시 당황하게 되는 부분이다. 이번 포스팅에서는 이 두 가지를 중점적으로 살펴보고자한다. 이 두 가지를 파악해두면 "코딩하고 로그를 출력해 디버깅한다"라는 가장 기본적인 ..

IT/AI\ML 2022.01.13

[python/Tensorflow1.x] Tensorflow의 이름공간(NameSpace)와 공유 변수(Sharing Variable)

2015년 11월에 공개된 Tensorflow에는 "이름공간(Name Space)"의 기능이 추가됐다. 이것은 TensorBoard에서 그래프 시각화를 위해 사용되지만 이 기능만 하는 것은 아니다. 이름 공간은 식별자 관리에 매우 도움이 된다. 한편, Python의 변수 스코프는 로컬, 글로벌, 논글로벌 밖에 없기 때문에 TensorFlow의 코어 부분을 c++레벨 수준의 이름 공간을 서포트하기 위해 Google 엔지니어가 개발한 것으로 보인다. Neural Network의 경우 층이 별로 깊지 않은 MLP(Multi-Layer Pereptron)등에서는 이름 관리로 힘들지 않지만, 깊은 CNN이나 RNN에서 볼 수 있는 커다란 모델의 경우에는 가중치 등을 공유할 필요도 있고, 제대로 된 변수 스코프가 ..

IT/AI\ML 2022.01.12

[python/OpenCV] cv2.Canny():Canny방법을 이용하여 물체의 외곽선(엣지) 추출하기

외곽선(엣지)란 물체간 혹은 배경과의 경계를 일컫는 것으로, 외곽선(엣지) 검출이란 일반적으로 이미지 안의 화소치의 변화, 휘도의 변화가 커다란 부분을 검출하여 엣지를 추출하는 이미지 처리를 의미한다. cv2.Canny()이란 OpenCV에 제공되어 있는 엣지 검출 함수로, 이미지의 엣지만을 되돌려준다. 다만, 적절히 사용하기 위해서는 1개의 파라미터를 조정해야할 필요가 있다. 기본적인 문법은 다음과 같다. cv2.Canny(gray_img, threshold1, threshold2) 간단히는 threshold1와 threshold2 어느쪽도 엣지 여부의 판단하는 임계값을 나타내고 있다. 클수록 엣지가 검출되기 어렵고, 작을 수록 엣지가 검출되기 쉽다(그 값이 크면, 보다 커다란 휘도 변화가 나타날 때가..

IT/언어 2022.01.04

[python/Numpy] 분산을 계산하는 var()의 사용법과 주의법

Numpy에는 배열 요소의 분산 계산해주는 np.var()가 준비되어 있다. 이 포스팅에서는 이 함수의 사용법과 주의법에 대해 설명하고자 한다. 또한, 동일한 기능을 하는 ndarray.var도 있는데 옵션이 완전히 동일하므로, np.var에 대해서 설명하도록 하겠다. 더욱이, np.nanvar이라는 함수가 있는데, 보통의 np.var의 경우 대상이 되는 배열에 결손값 nan이 포함되어 있는 경우, nan이 반환된다. 그러나 np.nanvar으로는 결손값 nan을 무시하고 그외의 배열 요소의 분산을 계산한다. 이 차이는 기억해두면 좋을 것이다. 기본 서식 np.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=) 인수 데이터 형 해설 a array_li..

IT/언어 2021.12.24

[git] git의 여러가지 취소 방법

git에서는 "취소"라는 말이 상황에 따라 조금씩 다르다. 이 포스팅에서는 변경을 "취소"하고 싶은 상황 시나리오를 제시하고 그에 따른 적절한 git 사용 방법을 작성하고자한다. "퍼블릭"한 변경을 취소 - 시나리오 git push를 실행해서 GitHub에 변경사항을 보낸 후, 하나의 커밋에 문제가 있는 것을 발견했다. 당신은 이 커밋을 취소하고 싶어졌다. - 사용할 커맨드 git rever - 동작 설명 git revert는 전달된 SHA와 반대의 (원래로 되돌리는) 새로운 커밋을 만든다. 이전 커밋에서 "한 것"은 새로운 커밋에서 "한 것과 반대"가 된다. 즉 이전 커밋에서 삭제된 것은 새로운 커멧에 추가되고, 이전에 커밋에서 추가된 것은 새로운 커밋에서는 삭제된다. 히스토리를 고쳐 쓰지 않는다는 점..

IT/기초 지식 2021.12.19

[python] 결정계수 R2와 자유도 조정 결정 계수 R*2

다중회귀 분석의 결과 지표 중 하나는 "결정계수"이다. 1에 가까울수록 좋은 결과가된다. 그러나, 결정계수만으로는 결과를 잘못 이해할 가능성이 있기 때문에, 결정계수에 대해 잘 이해해둬야할 필요가 있다. 먼저 결정계수에 대해 가볍게 살펴보고 가자. 결정계수는 회귀 분석에 의해 도출된 목적 변수의 예측 값이, 실제 목적 변수의 값과 어느정도 일지하는가를 표시하는 지표이다. 회귀분석에는 y=ax+b이라는 식으로 표시할 수 있는 단일 회귀 분석과 설명변수가 여러 개 있는 다중 회귀 분석이 있다. (이번 포스팅에서는 결정계수 계산식에 대해서는 다루지 않고, 자유도 조정 결정 계수에 대한 것을 주로 다룰 것이다) 단일 회귀분석에 있어서 결정계수 단일 회귀 분석에서는 y=ax+b의 형식으로 목적 변수(y)의 값을 ..

IT/AI\ML 2021.11.28

[python/Numpy] Numpy 요소 바꾸는 함수

numpy.where() numpy.where()은 조건문을 만족하는 요소와 만족하지 않은 요소를 각각 지정한 숫자나 불 값으로 바꿔주는 함수이다. 기본 구문은 다음과 같다. numpy.where(condition, x, y) condition에는 배열을 포함한 조건문을 넣고, condition이 참일 때는 x로 값을 바꾸고, 거짓일 경우는 y로 값을 치환한다. numpy.where()을 사용하여 배열의 짝수 요소를 0, 홀수 요소를 1로 치환해보자. # NUMPY_WHERE # In[1] import numpy as np # [[1 2 3] # [4 5 6] # [7 8 9]] a = np.arange(1, 10).reshape(3, 3) # 짝수는 0, 홀수는 1으로 치환한다. b = np.where..

IT/언어 2021.11.28

[python] 문자열에서 특정(일부) 문자만 삭제하는 방법들

이번 포스팅에서는 python에서 불필요한 물자열을 삭제하는 네 가지 방법에 대해 알아보고자 한다. - strip 메소드 : 양 끝의 불필요한 문자를 삭제한다. - replace 메소드 : 지정 문자열을 치환하여 삭제한다. - translate 메소드 : 여러 개로 지정한 문자열을 한 번에 삭제한다. - re.sub 함수 : 복잡한 패턴의 문자열을 치환하여 삭제한다. strip메소드는 주의점이 있으므로, 제대로 확인해 둘 필요가 있다. 또한 이 중에서 translate 메소드가 제일 처리 속도가 빠르다. 이제 본격적으로 각각의 특징에 대해 알아보자. strip 메소드로 문자열을 삭제하는 방법 strip 메소드에는 세 가지가 있다. - strip : 양 끝단의 불필요한 문자열을 삭제 - lstrip : 왼..

IT/언어 2021.11.17

[python/OpenCV] OpenCV를 이용한 픽셀 논리연산 - AND, OR, XOR, NOT

python 이미지 처리 라이브러리인 OpenCV를 이용해 2개의 이미지를 합성하거나 겹치는 방법으로 bitwise를 사용할 수 있다. 이번 포스팅에서 간단히 논리연산 AND, OR, XOR, NOT에 대해 2개의 이미지를 사용해 각각 어떤 원리인지 간단하게 살펴보고자한다. 2개의 이미지를 준비 다음의 코드로 두 가지 이미지를 읽어들였다. import cv2 import matplotlib.pyplot as plt %matplotlib inline img1 = cv2.imread('images/img1.jpg') img2 = cv2.imread('images/img2.jpg') 각각의 이미지를 살펴보면 다음과 같다. plt.imshow(img1) plt.imshow(img2) AND 연산 - bitwis..

IT/언어 2021.11.15

[python/OpenCV] OpenCV를 이용해 이미지의 특정 색 추출 (RGB vs HSV)

OpenCV를 사용해서 특정 범위의 색을 추출하는 방법에 대해서 알아보고자 한다. 예를 들어 (0, 0, 100) ~ (100, 100, 225)와 같이 색 범위를 전달해, 그 내용을 바탕으로 범위 내의 화소만을 추출하고자 한다. 색의 추출의 경우 이미지의 RGB를 사용하는 방법도 있지만, RGB를 HSV로 변환하여 HSV에서 색을 추출하는 방법도 있다. 이번 포스팅에서 이 두 가지 방법에 대해 알아보고 비교해보고자 한다. HSV : Hue, Saturation, Value HSV이란 색상(Hue), 채도(Saturation), 명도(Value) 세 가지 성분을 이용해 색을 표현하는 방법으로, RGB와 같이 빛의 3원색(빨강, 초록, 파랑)과는 다른 세 가지 축으로 색을 표현한다. 1) 색상(Hue) :..

IT/언어 2021.11.15
728x90