일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- max
- 그래프시각화
- 팀스파르타
- 회귀분석 알고리즘
- sql
- 순위출력
- count
- 불순도제거
- 막대그래프
- 데이터분석
- %in%
- if문 작성법
- 회귀분석
- 정보획득량
- 빅데이터분석
- 상관관계
- merge
- 단순회귀 분석
- 데이터분석가
- difftime
- loop 문
- 빅데이터
- Intersect
- sqld
- Dense_Rank
- 여러 데이터 검색
- 그래프 생성 문법
- 총과 카드만들기
- Sum
- 히스토그램 그리기
- Today
- Total
ch0nny_log
[빅데이터분석] 딥러닝_1. numpy 행렬 본문
딥러닝책 : "밑바닥 부터 시작하는 딥러닝"
이 책이 딥러닝의 정석과 같은 책입니다. 딥러닝의 원리를 정말 잘 설명한 책
이 책이 전세계적으로 유명해진 이유가 ? 그림 설명이 많아서 이해하기 쉽게 구성
책의 내용은 미국 스탠포드대 딥러닝 강의를 그대로 교안으로 만든겁니다.
장점 ? 딥러닝의 원리를 정말 잘 설명
단점 ? 현재 텐써 플로우나 파이토치에 대한 코드가 없습니다.
오로지 파이썬 날코딩으로 신경망을 구현했습니다.
요즘에는 텐써플로우나 파이토치등을 이용해서 신경망을 구성합니다.
단층 신경망 | 0층 -----------> 1층 |
입력층 출력층 | |
다층 신경망 | 0층 ------> 1층 ----------> 2층 |
입력층 은닉층 출력층 | |
딥러닝 | 입력층 --------> 은닉층들 ---------> 출력층 |
■ numpy 와 matplotlib p36
▣ 1. 넘파이(numpy) 란? 파이썬 언어에서 기본적으로 지원하지 않는 배열(array)
혹은 행렬(matrix) 의 계산을 쉽고 빠르게 해주는
라이브러리 입니다.
▣ 2. 넘파이(numpy)를 배워야 하는 이유 ?
신경망에서 데이터를 계산할 때 행렬로
계산을 하는데 행렬 계산을 아주 빠르고 쉽게 해주는 모듈이
numpy 여서 넘파이를 배워야합니다.
수지 사진 ---------> 숫자 행렬로 변환이 되어서 신경망에 입력됩니다.
문제1. 아래의 행렬을 numpy 로 만드시오 !
1 2
3 4
답: import numpy as np a = np.array( [ [ 1, 2 ], [ 3, 4 ] ] ) a
설명: 리스트를 numpy 의 배열로 변환을 했습니다. 이렇게 변환해야 행렬계산을 빠르게 할 수 있습니다.
문제2. 위의 a 행렬의 각 요소에 숫자 5를 더하시오 !
import numpy as np a = np.array( [ [ 1, 2 ], [ 3, 4 ] ] ) a + 5
※ 위의 기능이 바로 numpy 의 그 유명한 "브로드 캐스트" 기능입니다.
★ 구글에서 '한빛 미디어 라고 검색하고 부록 예제 소스 에 가서 밑바닥부터 시작하는 딥러닝 실습 파일을 다운로드 받으세요
문제3. 그림 1-1 처럼 행렬 계산을 numpy 로 구현하시오. 즉 브로드 캐스트가 되는지 확인하시오 !
답: import numpy as np a = np.array( [ [ 1, 2 ], [ 3, 4] ] ) print( a * 10 )
만약 브로드 캐스트가 안된다면 for loop문을 써서 계산을 해야합니다. 그런데 루프문 없이 쉽게 구현했습니다.
문제4. 그림 1-2(책 40페이지)의 브로드 캐스트 기능을 numpy 로 구현하시오 !
답: import numpy as np a = np.array( [ [ 1, 2 ], [ 3, 4 ] ] ) b = np.array( [ [ 10, 20 ] ] ) a * b
문제5. 아래의 행렬의 곱을 numpy로 구현하시오.
import numpy as np a = np.array([1, 2]).reshape(1, 2) b = np.array([1, 3, 5, 4, 3, 2]).reshape(2, 3) print(np.dot(a, b))
문제6. 아래의 행렬의 내적(곱)을 numpy로 구현하시오.
import numpy as np a = np.array([2, 4, 1, 5, 6, 3]).reshape(2, 3) b = np.array([3, 2, 1, 4, 5, 2]).reshape(3, 2) print(np.dot(a, b))
■ 넘파이의 N차원 배열
넘파이는 1차원 배열(1줄로 늘어선 배열) 뿐만 아니라 다차원 배열도 작성할 수 있습니다.
예제:
x = np.array([ [ 1, 2, 3, 4, 5], [ 2, 4, 3, 2, 4 ], [ 3, 1, 4, 3, 1 ], [ 2, 7, 3, 4, 5 ] ] )
# 몇 행 몇 열인지 확인
x.shape # (4, 5)
# 몇 차원 인지 확인
x.ndim # 2 차원
수학에서는 1차원 배열을 ---> 백터(vector) 라고 하고
2차원 배열을 ---> 행렬(matrix) 라고 하고
-> 백터와 행렬을 일반화한것을 텐서(tensor) 라고 합니다.
tensor flow ----------> 행렬이 계산이 되면서 흘러간다.
↓ ↓
다차원 흘러간다
구글에서 만든 텐써 플로우는 다차원 배열의 연산을 빠르게 할 수 있겠금 구현이 되어져 있습니다.
파이썬 -----------> 텐써 플로우
↓ ↓
레고조각 레고 조각을 가지고 만든 일부 완성품
(예: 식탁, 문고리, 창 )
문제1. tensor flow를 설치하시오.(쥬피터에서는 이미 내장되어 있음)
pip install tensorflow import tensorflow as tf
문제2. tensorflow로 아래의 행렬 계산을 하시오.
import tensorflow as tf a = tf.constant( [[1, 2]], dtype=tf.int32 ) b = tf.constant( [ [ 1, 3, 5 ], [ 4, 3, 2] ], dtype=tf.int32) result = tf.matmul(a, b) print(result)
■ 넘파이 원소접근 P40
numpy 배열 안에 요소들에 대한 접근은 numpy 를 이용하지 않았을때 보다 훨씬 간단하게 구현할 수 있습니다.
예제1. 아래의 리스트에서 숫자 55를 출력하시오 !
a = [ 51, 55, 14, 19, 0, 4 ]
답: a[1]
예제2. 아래의 리스트에서 숫자 15 이상인 숫자들만 출력하시오 !
a = [ 51, 55, 14, 19, 0, 4 ]
출력결과 : [ 51, 55, 19 ]
답:
a = [ 51, 55, 14, 19, 0, 4 ]
result = [ ]
for i in a :
if i >= 15:
result.append(i)
print(i)
예제3. 위의 결과를 numpy 를 이용해서 쉽게 구현하시오 !
import numpy as np
a = [ 51, 55, 14, 19, 0, 4 ]
a2 = np.array(a)
a3 = a2[ a2 >=15 ]
list(a3)
문제1. 아래의 3*2 행렬식을 만들고 아래의 행렬 요소에서 15이상인 것만 출력하시오.
51 55
14 19
0 4 [결과: 51 ,55, 19]
답: a = np.array([ 51, 55, 14, 19, 0, 4] ).reshape(3,2) list( a [ a >= 15] )
문제2. 아래의 행렬에서 숫자 3인것만 출력하시오.
5.1 3.5 1.4 0.2
4.9 3.0 1.4 0.2
4.7 3.2 1.3 0.2
4.6 3.1 1.5 0.2
[결과: 5.1 , 3.5, 4.9, 3.0, 4.7, 3.2, 4.6, 3.1 ]
import numpy as np # 주어진 행렬을 NumPy 배열로 정의 a = np.array([[5.1, 3.5, 1.4, 0.2], [4.9, 3.0, 1.4, 0.2], [4.7, 3.2, 1.3, 0.2], [4.6, 3.1, 1.5, 0.2]]).reshape(4,4) list(a[a>3])
'빅데이터 분석(with 아이티윌) > deep learning' 카테고리의 다른 글
[빅데이터분석] 딥러닝_7. 미니배치/수치미분/사진인식(mnist) (0) | 2024.10.10 |
---|---|
[빅데이터분석] 딥러닝_6. 2층 신경망 구현하기 (1) | 2024.10.07 |
[빅데이터분석] 딥러닝_5. 출력층 함수 소프트 맥스 함수 (0) | 2024.10.07 |
[빅데이터분석] 딥러닝_3. 하이퍼블릭 탄젠트 함수/렐루함수 (2) | 2024.10.04 |
[빅데이터분석] 딥러닝_2. Matplotlib를 이용한 시각화 / 퍼셉트론 / 신경망 구현 / 활성화 함수 (0) | 2024.10.02 |