기타/기타 잡다한 것들 91

연습문제) 텐서플로우로 간단한 계산하기 1

간단한 덧셈 프로그램 12345678910111213import tensorflow as tf # 상수a = tf.constant(1234)b = tf.constant(5000) # 계산 정의add_op = a + b # 세션 시작sess = tf.Session()res = sess.run(add_op)print(res)cs import tensorflow 명령어를 통해 텐서플로우를 불러온다.텐서플로우 내부에 a = 1234 , b = 5000 을 정의한다덧셈하는 계산을 정의한다. ( 변수 add_op에 대입되는 것은 덧셈 결과로 나오는 상수가 아니라 데이터 플로 그래프 라는 객체이다. )텐서플로우로 계산을 실행하기 위한 세션을 실행한다.세션을 시작하려면 run 명령어를 통해 데이터 플로그래프를 run(..

[머신러닝] Pandas 와 metrics 를 이용해서 XOR 연산을 더 간단히

Pandas 모듈의 DataFrame 기능을 사용하여 구현했습니다.데이터 학습과 예측은 이전과 같습니다. 마지막으로 정답률 구하는 것은metrics.accuracy_score() 함수를 이용하여 정답률을 쉽게 구하였습니다. 매개변수에는 실제 답과 예측 결과 배열을 전달하면 됩니다. 1234567891011121314151617181920212223import pandas as pdfrom sklearn import svm, metrics # XOR 연산xor_input = [ [0,0,0], [0,1,1], [1,0,1], [1,1,0]]# 입력을 학습 전용 데이터와 테스트 전용 데이터로 분류xor_df = pd.DataFrame(xor_input)xor_data = xor_df.ix[:,0:1] # 데..

[머신러닝] 프레임워크 scikit-learn을 사용하여 XOR 연산 해보기

파이썬에서 쉽게 사용할 수 있는 머신러닝 프레임워크인 scikit-learn(사이킷 런)을 사용해본다.scikit-learn은 파이썬 머신러닝 라이브러리의 정석과도 같은 라이브러리이다. 사이킷 런은 다양한 분류기를 지원하며, 머신러닝의 결과를 검증하는 기능도 가지고있다. 또한 분류, 회귀, 클러스터링, 차원 축소처럼 머신러닝에서 자주 사용되는 다양한 알고리즘을 지원한다. 필자는 아나콘다와 주피터 노트북을 활용해서 테스트를 할 것입니다. 1. scikit-learn 패키지 설치하기 2. 데이터를 읽고 분할할 때 편리하게 사용할 수 있는 Pandas 도 설치한다. (나중에 따로 포스트함 ...) pip install pandas 사이킷 런으로 XOR 연산 학습해보기 ( 어떤 흐름으로 머신러닝을 하는지 알아보..

머신러닝 기본 정리 및 개요

머신러닝이란인공지능 연구 과제 중의 하나로, 인간의 뇌가 자연스럽게 수행하는 "학습"이라는 능력을 컴퓨터로 구현하는 방법.간단히 설명하면 수많은 데이터를 학습하여 거기에 있는 패턴을 찾아내는 것최근에는 머신러닝을 활용해 문자 인식, 음성 인식, 바둑 등등 개발이 이뤄지고 있다. 머신러닝에서의 벡터(Vector)아래의 사진을 보면 Circle 과 Rectangle이 모여있는 것을 확인할 수 있는데 공간에서 벡터는 크기와 방향을 가진 것을 의미한다. 이처럼 어떤 요소가 모여있는 것을 "특징량" 이라고 한다. 머신러닝은 계산을 통해 구분선을 찾아내는 것이다. 구분선을 찾을 때는 점과 점 사이의 거리를 구하고, 거리가 가까우면 비슷한 데이터라고 판정한다.머신러닝에서의 특징 추출머신러닝을 하려면 데이터가 어떤 특..

[신경망] 파이썬으로 인공 신경망 만들기5

신경망 학습시키기 신경망 학습의 두 가지 단계주어진 학습 데이터에 대해 결과 값을 계산해내는 단계.계산한 결과 값을 실제의 값과 비교하고 이 차이를 이용해 가중치를 업데이트 하는 단계 tarin() 함수 코드 입력 계층으로부터의 신호를 최종 출력 계층까지 전파하는 과정은 query() 함수와 동일 하므로 내용은 거의 동일하다. 다만 아래 함수 매개변수를 보면 targets_list 가 추가로 존재한다. 이 매개변수 없이는 신경망을 제대로 학습시킬 수 없다.1def train(self, input_list, targets_list):cs 앞에서 inputs_list를 numpy 배열로 변환했던 것과 동일한 방법으로 targets_list를 변환해줍니다.1targets = numpy.array(targets..

[신경망] 파이썬으로 인공 신경망 만들기 4

신경망에 질의하기 query() 함수는 신경망으로 들어오는 입력을 받아 출력을 반환해준다. 단순한 작업이지만 이를 입력 계층부터 은닉 계층을 거쳐 최종 출력 계층까지 수행해야 한다는 점을 기억해야 한다. 또한 신호는 은닉 노드와 출력 노드로 전달될 때 가중치 연산과 활성화 함수 작용을 거친다는 점을 기억해야 한다. 입력계층과 은닉 계층 사이의 가중치 행렬은 입력 행렬과 조합되어 은닉 계층으로 들어오는 신호가 되며 다음과 같이 표기 할 수 있다. X = W · I 파이썬에서는 numpy 라이브러리의 dot 함수를 쓰면 다음과 같이 표현할 수 있다.hidden_inputs = numpy.dot(self.wih , inputs) 이처럼 파이썬에서는 간단한 코드로 모든 입력 값과 가중치를 연산함으로써 은닉 계층..

[신경망] 파이썬으로 인공 신경망 만들기 3

신경망의 핵심 가중치 신경망에서 가장 중요한 부분은 바로 연결 노드의 가중치 이다.가중치는 전파 시 전달되는 신호와 역전파 시 오차를 계산하는 데 쓰이며, 이를 통해 신경망을 개선하는 역할을 수행한다. 가중치는 행렬로 간결하게 표현될 수 있다. 그러므로 다음과 같은 행렬을 만들 수 있다. (은닉 노드 X 입력 노드)의 크기를 가지는 입력 계층과 은닉 계층 사이의 가중치의 행렬 W(출력 노드 X 은닉 노드)의 크기를 가지는 은닉 계층과 출력 계층 사이의 가중치의 행렬 W 파이썬의 numpy 함수는 0과 1사이에서 임의로 선택한 값을 원소로 가지는 행렬을 생성한다 (행렬의 크기는 행 X 열)numpy.random.rand(rows, columns) numpy 를 사용하기 위해서는 numpy 모듈을 불러와야 ..

[신경망] 파이썬으로 인공 신경망 만들기 2

신경망 초기화 하기 입력계층의 노드, 은닉 계층의 노드, 출력 계층의 노드의 수를 정해야 한다.이를 통해 신경망의 형태와 크기를 정의하게 되는 것이다. 신경망 내에 직접 정의하기보다는 신경망의 객체가 생성될 때 매개변수를 이용해 정의한다.그래야 다른 크기를 가지는 새로운 신경망도 때에 따라 손쉽게 생성할 수 있기 때문이다. 초기화에서 또 한가지 잊지 말아야 할 것은 학습률이다.학습률은 새로운 신경망을 만들 때 매우 중요한 매개변수이다. 1234567891011121314151617181920# 신경망 클래스의 정의class neuralNetwork: # 신경망 초기화 def __init__(self, inputnodes, hiddennodes, outputnodes, learningrate): # 입력,..

[신경망] 파이썬으로 인공 신경망 만들기 1

신경망은 적어도 다음 세가지 기능을 가져야 한다. 초기화 : 입력, 은닉, 출력 노드의 수 설정학습 : 학습 데이터들을 통해 학습하고 이에 따라 가중치를 업데이트질의 : 입력을 받아 연산한 후 출력 노드에서 답을 전달 물론 훨씬 더 많은 기능이 필요하지만 이정도로만 시작. 신경망 클래스의 형태 1234567891011121314# 신경망 클래스의 정의class neuralNetwork: # 신경망 초기화 def __init__(): pass # 신경망 학습 def train(): pass # 신경망에 질의 def query(): passcs