반응형
반응형

[머신러닝] lab 8: Tensor Manipulation

https://www.youtube.com/watch?v=ZYX0FaqUeN4&index=24&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



1. 텐서플로우의 기본적인 1차원 Array 사용법

t = np.array([0,1,2,3,4,5,6])

pp.print(t)

print(t.ndim) #차원 수 출력

print(t.shape) #행렬

print(t[0], t[1], t[-1])...

print(t[2:5], t[4:-1])...

print(t[:2], t[4:])... 


2. 2차원의 Array 사용법

t = np.array([1, 2, 3],[1, 2, 3], [1, 2, 3], [1, 2, 3])

pp.print(t)  #(4,3)행렬이 나오게 됨 

print(t.ndim) # 차원 수 : 2

print(t.shape) # 행렬



반응형

#모두를 위한 딥러닝 강좌 lec 8-2 : 딥러닝의 기본 개념2: Back-propagation 과 2006/2007 '딥'의 출현

https://www.youtube.com/watch?v=AByVbUX1PUI&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=23



Breakthrough

in 2006 and 2007 by Hinton and Bengio

초기값을 잘준다면 신경망이 많아도 학습이 잘 될 수 있다는 이론의 논문 발표

뉴럴넷이라고 하면 사람들이 어려워하고 힘들어하니까 Deep learning 으로 명칭도 바꿔서 말하기 시작함


ImageNet 

이미지 넷이라는 사이트에서는 사진을 주고 컴퓨터에게 무슨 사진인지 맞춰보라고 하는 기능이 비약적으로 오류율을 줄이면서 관심을 더 갖게 됨

뿐만 아니라 기술의 발전으로 그림을 설명하기도 했다. 


최근 바이두에서는 소음이 많은 곳에서도 사람의 음성을 인식하는 기술을 개발했다..


그러면서 Hinton이 왜 이전에 잘 안됐는지 4가지 원인을 밝혀보았다.

요건 다음 시간에..


데이터 마이닝을 알면 뭐가 좋은가?

비즈니스 환경에서 활용할 수 있다.

ex) 유튜브의 자막, 페이스북의 추천도 모두 AI를 통해서 만들어지고 있는 서비스다.

반응형

hdf5 파일형식이란? (https://www.hdfgroup.org/hdf5/)

계층적 데이터 형식(Hierarchical Data Format, HDF)은 HDF Gruop에 의해 관리되고 있는 대용량의 데이터를 저장하기 위한 파일 형식이다.

HDF5 is a data model, library, and file format for storing and managing data. It supports an unlimited variety of datatypes, and is designed for flexible and efficient I/O and for high volume and complex data. HDF5 is portable and is extensible, allowing applications to evolve in their use of HDF5. The HDF5 Technology suite includes tools and applications for managing, manipulating, viewing, and analyzing data in the HDF5 format.


hdf5의 특징 (https://support.hdfgroup.org/HDF5/whatishdf5.html)

  • XML과 동일하게 자기 기술적으로 구성되어있어 데이터 형식을 파일 안에 기술이 가능하다.
  • 많은 양의 데이터를 저장 가능하다.
  • 검색 속도가 빠르다.
  • 병렬 입출력을 지원한다.
  • 데이터의 무작위 조회가 가능하다.
  • 20여년 이상 개발되어온 포맷으로 안정적이다.
  • 수많은 프로그래밍 언어와 오픈소스 라이브러리 API가 지원된다.

hdf5에 대해서

Python에서 사용하는 방법


참고 링크


반응형

#모두를 위한 딥러닝 강좌 lec 8-1: 딥러닝의 기본 개념: 시작과 XOR 문제

https://www.youtube.com/watch?v=n7DNueHGkqE&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=22



사람의 뇌는 굉장히 복잡하게 연결되어있는데, 연결된 부분들을 자세히보니(뉴런)을 자세히 보니 단순하게 움직이는 구조더라! input → input이 들어오는 신호의 길이에 따라서 input x* weight 되면서 계속해서 Sum이되고 Bias라는 값이 더해지면서 전달이 되더라!

근데 그 어떤값을 통해서 뇌가 활성화가 되고 활성화가 되지 않기도 하더라! 그래서 나온 컴퓨터로 구현할 수 있지 않을까해서 나온 것이


Activation Functions


값이 어떤 값보다 크면 1을 주고 어떤 값보다 낮으면 0을 주는 형태로 만들면 되겠다! 라는 아이디어가 나왔다.


Logistic regression Units


지난 번 시간에 배웠던 Logistic regression이 여러개가 있따면 이런식으로 네트워크를 형성할 수 있겠다!

= 여러개의 출력을 동시에 낼 수 있다.


False Promises (허황된 약속)


Frank 박사는 당시에 그러한 알고리즘을 통해서 말하고, 걷고, 글을쓰고, 자기자신을 인지할 수 있다고 말을 함...

많은 사람들에게 관심을 끌게 되었고...


근데 성과가 없었던 것은 아니였다고 한다..


AND/OR problem : linearly separable? 


그 당시에 AND와 OR라는 로직을 풀 수 있으면, 이것들을 조합해서 인공지능 기계를 만들 수 있겠다고 생각했었다.


OR = x1(가로축 값)과 x2(세로축 값)의 값이 있을 때

x1이 1이고 x2가 1이면 = 1이되고

x1이 0이고 x2가 0이면 = 0이되는 것을 안다면 (왼쪽 or 그림)


x1+x2를 통해서 Y라는 값을 만들 수 있을까?

linear하기 때문에 값을 구분할 수 있다!


AND

x1이 0일때, x2도 0이면은 값이 0이 되고,

x1이 1일때, x2도 1이면은 값이 1이되는 (오른쪽 and 그림)


..... 진짜 인공지능 머신을 만들 수 있겠다 싶었는데!!


XOR라는 이상한게 나옴! 어떻게 나왔느냐


 x1

 x2

 결과

 0

 0

0

 0

 1

1

 1

 0

 1 

 1

 1

0


값이 같을 때 0, 값이 다를때 1이되는.. XOR를 가지고 x1과 x2를 더해서 Y값을 나오게 기계에게 시켰는데?

Y가 정확하게 안나오는 것이다..


이유는 +와 -값이 다르기 흩어져있기 때문에 어떻게해도 linear하게 선이 그어질 수 없어서 100프로 맞게 나올 수가 없다. 

확률이 아무리해도 50%밖에 안나오더라.. 그래서 많은 사람들이 좌절함


Perceptrons(1969) by Minsky

이런 시기에 Minsky라는 교수가 XOR는 수학적으로 풀 수 없다며 수학적인 증명으로 말했고

[  ] [  ] [  ] MLP를 여러개 합쳐서 XOR를 할 수는 있지만, 각각 [  ]안에 들어가는 weight 과 bias를 학습시킬 수 없다고 했다.






그러다가 74,84년도 쯤에 해결이 된다.

Backpropagation (1974, 1982)

가운데에 네트워크가 연결되어있고 w+b를 통해서 출력을 만들어낼 수 있는데

출력이 원하는 결과가 아닐 경우 w나 b를 조절해야했는데,


나중에 앞에서 w나 b값을 조절하지말고 나중에 w와 b를 조절하면 어떨까?하고 논문을 냄


이것을 통해서 본격적으로 ML에 이 알고리즘이 사용되기 시작함.


그리고 나중에 고양이의 시신경이 어떻게 움직이는지 보려고 했는데

그림을 다르게 줄 때마다 새로운 네트워크를 형성하여가는 것을 발견함


즉, 일부를 인식하고 나중에 합쳐지는 것이 아닐까란 생각을 함


Convolutional Neural Networks

그림을 모두 한번에 읽는 것이 아니라. 

A라는 그림을 잘라서 작게 쪼개서 머리로 보내고 나중에 그림을 다 합치는 방법을 발견하였다 => Neural Networks 방법 발견


A Big problem


Backpropagetion을 통해서 몇개는 괜찮던데 네트워크가 여러개로 만들어지는 머신러닝의 경우,

뒤에서 조절된 W와 B값이 다시 앞까지 가는데, 정보가 소실되고 어렵게 됨..

결국 간단한 알고리즘들이 더 성능이 좋더라!


반응형

#모두를 위한 립러닝 강좌 7-2 : Meet MNIST Dataset

https://www.youtube.com/watch?v=ktd5yrki_KA&index=21&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm


...

반응형

#모두를 위한 립러닝 강좌 7-1 : Training/test dataset, learning rate, normalization

https://www.youtube.com/watch?v=oSJfejG2C3w&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=20



ㅇㅇㅇㅇ

반응형
  • https://namu.wiki/w/OpenCL
  • https://namu.wiki/w/OpenGL

[OpenCL]

OpenCL(Open Computing Language)은 개방형 범용 병렬 컴퓨팅 프레임워크이다. CPU, GPU, DSP 등의 프로세서로 이루어진 이종 플랫폼에서 실행되는 프로그램을 작성할 수 있게 해 준다. OpenCL은 커널 코드를 작성하기 위한 C99 기반의 언어인 OpenCL C와 플랫폼을 정의하고 제어하기 위한 API를 포함하고 있다. OpenCL은 작업 기반(task-based) 및 데이터 기반(data-based) 병렬 컴퓨팅을 제공한다.

OpenCL이 만들어진 이유는 OpenGL이나 OpenAL이 만들어진 이유와 비슷하다. OpenGL과 OpenAL은 각각 3차원 컴퓨터 그래픽스 및 컴퓨터 오디오에 대한 산업계의 개방형 표준이다. OpenCL은 비영리 기술 컨소시엄인 크로노스 그룹(Khronos Group)에서 관리하고 있다.


[openGL]

OpenGL(Open Graphics Library)은 1992년 실리콘 그래픽스사에서 만든 2차원 및 3차원 그래픽스 표준 API 규격으로, 프로그래밍 언어 간 플랫폼 간의 교차 응용 프로그래밍을 지원한다. 이 API는 약 250여개 가량의 함수 호출을 이용하여 단순한 기하도형에서부터 복잡한 삼차원 장면을 생성할 수 있다. OpenGL은 현재 CAD, 가상현실, 정보시각화, 비행 시뮬레이션 등의 분야에서 활용되고 있다. 또한 컴퓨터 게임 분야에서도 널리 활용되고 있으며, 마이크로소프트사의 Direct3D와 함께 컴퓨터 그래픽 세계를 양분하고 있다. Direct3D와는 달리, 표준안이 여러 관련 업체의 토론과 제안으로 이루어지기에 버전 업데이트는 느린 편이다. OpenGL을 사용하여 개발된 대표적인 게임은 이드 소프트웨어 퀘이크, 둠3 시리즈이다. 현재 비영리 기술 컨소시엄인 크로노스 그룹에 의하여 관리되고 있다.

반응형

7. [Mac] 에서 텐서플로우(Tensorflow) GPU 설치하기


원문 : https://www.tensorflow.org/install/install_mac


  • TensorFlow with GPU support. TensorFlow programs typically run significantly faster on a GPU than on a CPU. Therefore, if your system has a NVIDIA CUDA GPU meeting the prerequisites shown below and you need to run performance-critical applications, you should ultimately install this version.

Requirements to run TensorFlow with GPU support

If you are installing TensorFlow with GPU support using one of the mechanisms described in this guide, then the following NVIDIA software must be installed on your system:

  • CUDA Toolkit 8.0. For details, see NVIDIA's documentation. Ensure that you append the relevant CUDA pathnames to the LD_LIBRARY_PATH environment variable as described in the NVIDIA documentation.
  • The NVIDIA drivers associated with CUDA Toolkit 8.0.
  • cuDNN v5.1. For details, see NVIDIA's documentation. Ensure that you create the CUDA_HOMEenvironment variable as described in the NVIDIA documentation.
  • GPU card with CUDA Compute Capability 3.0 or higher. See NVIDIA documentation for a list of supported GPU cards.

If you have an earlier version of the preceding packages, please upgrade to the specified versions. If upgrading is not possible, you may still run TensorFlow with GPU support, but only if you do both of the following:

  • Install TensorFlow from sources (as described in Installing TensorFlow from Sources.
  • Install or upgrade to at least the following NVIDIA versions:
    • CUDA toolkit 7.0 or greater
    • cuDNN v3 or greater
    • GPU card with CUDA Compute Capability 3.0 or higher.



1) 본인 PC에 NVIDIA GPU가 있는지 확인하기



사과 > 이 MAC에 관하여.. > 개요 > 그래픽 

본인 맥북은 2015년형 맥북 레티나 (macbook pro retina 15 inch) - Intel Iris 그래픽 카드를 쓰고있다...윽!


[window에서 확인하는 방법]

윈도우키+R > dxdiag > 디스플레이> AMD Radeon (TM) R5 340X 


2) CUDA 설치

NVIDIA CUDA란? (https://namu.wiki/w/CUDA)

NVIDIA GPU에서만 사용할 수 있습니다.. 


3) Tensorflow GPU 설치

방법1) cmd로 설치

pip install --upgrade tensorflow-gpu # for Python 2.7 and GPU

pip3 install --upgrade tensorflow-gpu # for Python 3.n and GPU


방법2) Pycharm 으로 설치


File > Default Settings .. 



Project Interpreter > 하단 Install 클릭 > Tensorflow-gpu 검색



설치 중 ... 



tensorflow-gpu 버전이 설치된 것을 확인 가능하다.


4) GPU 예제 실행해보기

테스트 진행




궁금한 점

NVIDIA GPU가 아닌 라데온이나 다른 그래픽 카드에서는 CUDA를 실행할 순 없을까?.. 없당.

*http://s3delta.tistory.com/401 > 썰일뿐이군.. 

*https://www.quora.com/Can-CUDA-work-with-AMD-Radeon-HD-8330-with-12Gb-RAM > 단호하네....


결론은 안되니까.. Open CL과 Open GL은 뭐지 알아봐야겠다.



참고 링크


+ Recent posts