목록전체 글 (12)
제로부터 시작하는 코딩 생활
공간 vs 시간 지난 시간 다룬 CNN은 공간적인 정보를 중요시했다면 RNN은 각 정보의 순서를 중요하게 여긴다. 시계열 데이터란 텍스트, 신호, 음성, 영상 데이터 등 "박수"와 "수박"이 다르듯이 순서가 존재하는 데이터셋을 말한다. 주식 데이터도 시계열 데이터에 포함될 수 있겠다. RNN RNN은 특정 시점의 데이터를 은닉층의 활성화 함수를 통해 그 데이터에 대한 출력을하고 초록색에 해당되는 메모리셀은 이전 데이터값의 기억을 가진채로(실제로 값을 그대로 기억하는 것이 아니라 이전의 데이터가 반영된 값이라 하는게 더 올바른 표현이 되겠다.) 다음 데이터와 함께 계산이 되는 과정을 반복하는 것이 RNN이다. RNN 입력과 출력데이터를 조절함에 따라 다음과 같이 분류할수도있다. 바리에이션중 하나로 Bidi..
DNN의 단점 기존 DNN은 패턴이 복잡해지면 정확도가 떨어진다는 단점이 있다. 저번 MNIST 데이터셋을 예로 들자면 흑백데이터라 비교적 단순한 데이터셋이었다. 게다가 DNN은 스스로 데이터의 패턴을 단순화 시킨다는 단점도 존재한다. MNIST에서도 23*23 사이즈의 데이터를 1줄로 만든후 처리를 하였다. 사진 데이터의 각 픽셀은 주변 픽셀과의 연관성을 배제할 수 없는데 이를 1차원으로 해석한다는 것이다. CNN ( Convolution Neural Network, 합성곱 신경망) 인간의 시신경 구조를 모방한 모델로 동일 데이터에 대해 여러 필터를 둘수도 있어 비전(vision) 분야에서 좋은 성능을 보인다. DNN과 달리 공간정보를 그대로 가지고 작업을 수행하기에 이미지의 패턴을 분석하는데 매우 유..
저번 시간엔 DNN에 대해 배워보았다. 이번시간엔 MNIST 데이터셋을 분석 하는 인공지능 모델을 리뷰해보는 시간을 가져보자. 이렇게 총 4개의 파일로 이루어져있다. 먼저 models.py 부터 살펴보자. Data_loader.py from torchvision import datasets, transforms from torch.utils.data import DataLoader def load_data_loader(config): transform=transforms.Compose([ transforms.ToTensor(), transforms.Normalize((0.1307,), (0.3081,)) ]) train_dataset = datasets.MNIST(config.data_dir, train..
DNN DNN은 (Deep Neural Network, 심층신경망) 인공신공망의 한 종류로 입력층과 출력층 사이에 여러개의 은닉층들이 이루어져 있는 인공신경망이다. 입력 값에 대해 W와 b에 대해 Wx+b과정을 통한 뒤 활성화 함수가 있는 다음 layer를 거친다. 비선형성 여러개의 Layer는 하나의 수식으로도 설명이 가능하다. 그럼 왜 여러개의 Layer로 표현하는 걸까? 여러개의 Layer를 쌓는것 뿐만 아니라 Layer에 비선형 활성함수를 포함한다는것도 중요한 포인트이다. 고차원의 데이터들은 대부분 선형 관계가 아닌 비선형 관계이다. 선형함수들을 아무리 쌓아 올려봤자 선형관계를 가질것이다. 이것은 고차원의 비선형 문제를 해결하는데 전혀 적합하지 않다. 선형 Layer들 사이에 비선형 활성함수를 집..
인공지능 개발에 가장많이 사용되는 프레임워크에는 Pytorch와 Tensorflow가있다. 우리는 그 중 Pytorch를 사용하기로 하였다. 먼저, 여러가지 방법으로 Tensor를 생성하는 법을 알아보자. FloatTensor() 실수형 변수들로 텐서를 생성 float_tensor = torch.FloatTensor([1,2,3,4]) float_tensor tensor([1., 2., 3., 4.]) LongTensor() 정수형 변수들로 텐서를 생성 여기서 Long은 정수자료형의 Long이 맞다 int_tensor = torch.LongTensor([1,2,3,4]) int_tensor tensor([1, 2, 3, 4]) randn(텐서의크기) 무작위 정수형 변수들로 입력된 크기로 생성 random..
Q. 코드에선 괄호의 쌍이 올바르지 않으면 에러가 난다. 괄호쌍이 올바른지 판별하는 코드를 작성하라 코드공개 a = input("코드입력: ") Brakets = {"[","]","{","}","(",")"} BraketList = [] purity = True extinction = False loop = 0 def CheckA(): global loop global extinction global purity loop = loop + 1 if BraketList[loop] == "]": del BraketList[loop-1:loop+1] extinction = True elif BraketList[loop] == "{": CheckB() elif BraketList[loop] == "(": Chec..
소수판별 문제를 풀다가 문득 소수를 찾는 코드를 짜보고 싶어졌다. 코드 공개 n = int(input("자연수를 입력하시오: ")) breaktime = 0 if n == 1: print("%d이하의 소수는 없습니다."%(n)) else: PrimeList = [2] while PrimeList[-1] n: PrimeList.pop() print(P..
Sigmoid 함수란 뉴런은 역치 이상의 반응에 대해서만 신호를 다음객체에게 전달한다. 이를 모방하여 딥러닝 네트워크에서도 각 노드에 입력된 값들이 특정한 함수를 통하여 조건적으로 다음 레이어에 전달한다. Sigmoid 함수는 뉴런이 작동하는 방식과 같아서 딥러닝의 기초적인 함수로서 많이 소개된다. Q. Sigmoid 함수를 구현하여라 단, e^x = 1 + e + x^2/2! + x^3/3! ..... 이고 항은 100개로 제한한다. 1차시도 import math x = float(input("x값을입력하시오: ")) ex = 0 for i in range(100): ex += x**i / math.factorial(i) # 0팩토리얼은 1이다. if 1 / (1 + ex) >= 0.5: print("..
Q.삼각형의 세변을 입력받은 다음 입력받은 삼각형이 예각 삼각형인지, 둔각 삼각형인지, 직각 삼각형인지 판별하시오.(단, 삼각형을 만들수 없는 경우는 없다고 가정한다.) 1차시도 a = input("한 변의 길이를 정하십시오(단위x): ") b = input("다른 한 변의 길이를 정하십시오(단위x): ") c = input("나머지 한 변의 길이를 정하십시오(단위x): ") legs = [int(a),int(b),int(c)] legs.sort() if legs[-1]**2 legs[0]**2 + legs[1]**2: print("둔각삼각형입니다.") elif legs[-1]**2 == ..
Q. 사용자에게 3개의 숫자를 입력받아 그안에서의 최대와 최소를 구하여 출력하라 1차 시도 FstInNum = input("1번째 숫자를 입력하세요.: ") SndInNum = input("2번째 숫자를 입력하세요.: ") TrdInNum = input("3번째 숫자를 입력하세요.: ") Nums = [int(FstInNum), int(SndInNum), int(TrdInNum)] SortedNums = Nums.sort() print("최댓값은 %d 이고 최솟값은 %d 입니다"%((SortedNums[-1]), (SortedNums[0]))) 작동여부: TypeError: 'NoneType' object is not subscriptable 아마도 Nums.sort()를 자체적으로 리스트로 보지 않는거..