분류 전체보기

    Tensorflow(텐서플로우) 설치와 기초

    지금까지는 파이썬으로만 설계와 구현을 해왔는데요 합성곱신경망(CNN), 순환신경망(RNN)등의 동작 알고리즘은 복잡하고 코드도 방대하기 때문에 파이썬만으로는 무리가 있습니다. 따라서 텐서플로우의 기본을 알아보고 설치를 해보도록 하겠습니다. 텐서플로우는 구글에서 개발하고 공개한 딥러닝 프레임워크이고, C++ Java 등 많이 지원하지만 Python에 가장 최적화되어있다고 할 수 있습니다. 텐서플로우 설치 pip install tensorflow pip install 기능을 사용하여 쉽게 설치할 수 있습니다. 만약에 설치할 때 에러가 나는 경우 python -m pip install --upgrade pip pip버전을 업그레이드 한 후 pip install --ignore-installed --upgrad..

    [프로그래밍언어] 프로그래밍언어의 역사

    Fortran I : 704를 위해 작성하던 코드 중 거의 절반이 Fortran으로 작성되고 있었다. 인기 많았다. 서브루틴을 위한 개별적 컴파일은 불가 Fortran II: 서브루틴들의 독립적인 컴파일 기능. 컴파일과정 상당히 단축해 훨씬 큰 프로그램 개발 가능하게함 실질적인 대규모 프로그래밍이 가능하게 됨 Fortran IV: 서브프로그램 이름이 파라미터가 될 수 있었다. --90이전: 컴파일타임에 변수type과 storage모두 fixed , recursive프로그램(x) Fortran 90: Parameter type checking, CASE문 Fortran 2003: OOP지원 Fortran 2008: 병렬적 프로그래밍-Thread Base(중요) ----------- Fortran은 Inte..

    [프로그래밍언어] Memory Allocation Area(code,data,stack,heap)->Segment

    Memory allocation process 에 따라 RAM은 4가지 area로 구성됩니다. Local variable or stack Free memory or Heap Static and global variables Code Area 지역 변수는 스택에 저장됩니다. code area는 C program insturction에 의해 머신코드로 변환후 저장됩니다. static과 global변수들을 위한 공간도 따로 있습니다. 그리고 free memory area를 heap이라고 합니다. heap의 크기는 프로그램실행중 계속 바뀝니다. Data Data: data(초기화o)와 bss(초기화x)로 이루어져있습니다. 초기화된 데이터는 data에 저장, 초기화되지않은 데이터는 bss에 저장됩니다. 함수 내부..

    [프로그래밍언어] Data Types_Union Types, Pointer and Reference Types, Type Checking, Strong Typing

    Union Types Union은 실행시간의 다른 시간들동안 다른 타입의 값들을 저장할 수 있도록 하는 타입입니다. 단점은 type checking이 dynamic해야한다는 것입니다. union Type{ int i; short int s[2]; char c[4]; }; Free Union은 type checking을 제공하지 않아 unsafe합니다. type checking을 하는 union은 discriminant라는 type 지시자를 가지고있습니다. Java와 C#은 Union을 제공하지 않습니다. Pointer and Reference Types 포인터타입 변수는 메모리주소를 가지고 NULL(nil)이라는 특별한 값을 가집니다. ptr=NULL; 하면 메모리가 해제됩니다. indirect addr..

    [프로그래밍언어] Data Types_Primitive, Character String, Enumeration, Array Types

    variables in Java: -primitive types: boolean, char, byte, int, short,long, float, double..... -non-primitive types: string, arrays, classes Primitive Data Types Decimal -장점: Accuracy , 단점: limited range(지수표현x), wastes memory Boolean -장점: readability, #include Character: stored as numeric codings(scalar), ASCII(8-bit code) or 16-bit coding:Unicode(UCS-2) Character String Types - C와 C++: Not primi..

    [프로그래밍언어] Syntax and Semantics

    Describing Syntax: Terminology Sentence Language: set of sentences Lexeme: syntactic unit(의미적요소)의 최소단위 Token: Lexeme의 카테고리_ 종류: 식별자, 연산자, 수치 리터럴, 특수어 Syntax: (구조, 문법): expressions, statements, and program units 어떻게 표현? Semantics: (의미): expressions, statements, and program units 적합한가? Syntax를 표현하는 방법 CFG(Context-Free Grammar) Chomsky위계의 Class2로 다음과 같은 형식을 따릅니다. A->x A: nonterminal symbol (LHS) x:..

    [프로그래밍언어]Subprograms

    추상화에는 두 가지 종류가 있습니다. Process abstraction Data abstraction(이는 여기서는 다루지 않을 내용입니다.) 우리가 메인함수에서 프로세스를 구성해서 f1(a,b)라는 subprogram을 호출했을 때 f1()이라는 실제 실행 함수는 호출한메인함수 프로세스를 추상화하게 됩니다. 그리고 다시 메인함수에서 f1()을 호출해서 재사용하는 것 또한 추상화입니다. 모든 subprogram은 entry point을 가집니다. subprogram을 호출하는 애를 calling program(caller)라고 하고 subprogram이 실행되는 동안에는 멈춰있습니다. C와 C++에서 함수 정의를 prototype이라고 합니다. caller에서 subprogram을 호출하는 f1(a,b..

    [프로그래밍언어] Names, Bindings, and Scopes

    명령형 언어는 폰노이만 아키텍처의 추상화입니다. 메모리에서 명령어와 데이터를 저장해서 기계메모리셀의 언어에서의 추상화(변수)가 이루어지죠. RAM에서 CPU로 load(fetch), CPU에서 RAM으로 store되는 life cycle을 가집니다. 변수는 이때 특징들을 가집니다. (키워드) scope(범위), lifetime(메모리에 적재되어 소멸까지의 시간), type checking(a=b;에서 a와 b는 상호호환), initialization, and type compatibility. Names 변수를 논의하기 전, 변수의 기본속성 중 하나인 이름을 논의해야합니다. Identifier(식별자)라는 말과 혼용되어 쓰입니다. 1. 설계시 고려해야하는것은, 이름들이 case sensitive한가?(대..

    [Programming Language] Preliminaries

    프로그래밍언어를 배우는 이유 적합한 언어를 고를 수 있는 백그라운드, 생각을 표현할 수 있는 능력 향상, 새로운 언어를 배울 수 있는 능력 등 입니다. 예를 들어 Perl로 배열을 구현해서 C로 똑같이 구현하기, 객체지향 개념을 자바로 배우기, 프로그램 버그 고치는 능력 등입니다. 프로그래밍 영역 과학응용분야 - Fortran 사무응용분야 - COBOL 인공지능분야 - LISP, Python, R 시스템 프로그래밍 - C(Unix가 OS) 웹 소프트웨어 - Javascript, HTML 언어평가기준-Readablility 판독성 유지보수의 용이성(ease of maintenance)는 판독성으로 대부분 결정됩니다. -Overall Simplicity (전반적인 단순성) : 프로그램의 작성자가 그 판독자가..

    [딥러닝/인공지능] 오차역전파(Back Propagation)

    이전에 배운 MNIST 알고리즘은 학습시간 평균 20시간 이상이다. 결코 좋은 알고리즘이 아니다.. 수치미분을 통해 수행한 MNIST는 은닉층 노드개수를 정확도높이기위해 증가할수록 학습시간이 엄청나게 소요된다. 이 단점을 해결하기 위해 나온 알고리즘이 바로 오차역전파다. 오차역전파는 딥러닝의 꽃이다. 체인룰에 의해서 분해되어 1,2,3 등 국소적인미분의 곱셈 형태로 나타낼 수 있다. 즉, 편미분식을 그대로 계산하는 것이 아니라 체인룰을 적용하여 국소미분으로 분리한 다음, 분리된 국소미분을 계산하기 쉬운 형태의 수학공식으로 나타내는 것을 오차역전파라고 한다. 은닉층 오차역전파공식은 (E1나 E2중 하나에게만 영향받는) 출력층과 다르게 E1와 E2에게 모두 영향을 받는다.

    [딥러닝/인공지능]MNIST(필기체 손글씨)

    딥러닝구조를 이용하여 MNIST, 즉 필기체손글씨를 인식할 수 있습니다. np.loadtxt()함수를 이용하여 트레이닝데이터행렬을 만들 수 있습니다. Train Data Set 과 Test Data Set 을 활용해보겠습니다. 학습데이터인 Train Data Set에는 총 6만개의 이미지데이터가 있습니다. 하나의 이미지는 28*28개로 총 784개의 숫자로 이루어져 있습니다. 위 Train Data Set 파일에서 처음 5라는 숫자는 정답 숫자에 대한 정보이고 그 이후로 784개의 숫자가 이미지를 나타내는 정보입니다. 픽셀 하나의 밝기값이라고 볼 수 있습니다. 0에 가까울수록 검은색이고 255에 가까울수록 밝은(흰)색입니다. 학습데이터에서는 하나의 이미지가 784개의 숫자를 가진 1차원 배열로 표현되지만..

    [딥러닝/인공지능]딥러닝기초_피드포워드/XOR문제해결

    신경망(NN) 개념 사람의 신경망을 구성하는 신경세포 뉴런은 각각의 입력 신호에 최적의 가중치를 곱한 모든 합이 어느 임계값(Threshold)에 도달해야만 다음 뉴런으로 출력신호를 보내는 구조다. 이처럼 입력 신호를 받아서 특정임계값을 넘어서야만 출력을 생성하는 함수를 활성화함수라고 한다. 딥러닝 기초 딥러닝은 입력층, 은닉층, 출력층을 구축한 다음, 출력층의 오차를 기반으로 오차가 가장 작아지도록 각 층 사이에 존재하는 가중치(W2,W3..),각 층의 바이어스(b2,b3...)값을 최적화하는 머신러닝의 한 분야다. 참고로 딥러닝 구조에서 은닉층을 더 사용할수록 결과의 정확도가 높아진다고한다. 은닉층을 깊게할수록 정확도가 높아진다고 하여 '딥'용어가 붙었다. 피드포워드(Feed Forward) 위의 그..