AI-Deep Learning 1日目
45030 ワード
学習内容
import math # 기본적인 수식을 쓰기 위해 임포트
import numpy as np
import matplotlib.pyplot as plt\
plt.style.use('seaborn-whitegrid') #그리드가 있는 표 그리기
# 함수 생성 (파라미터 1개인 함수 생성)
def linear_funtion(x):
#a는 기울기와 상수로 생성
a = 0.5
b = 2
# 일차함수 수식 반환
return a * x + b
# 테스트
print(linear_funtion(5))
결과)
4.5
x = np.arange(-5, 5, 0.1)
y = linear_funtion(x) #배열을 넣으면 결과인 배열이 y에 담김
#그래프로 그리기
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Linear Funtion')
# 선형회귀를 만들었음
def quadratic_funtion(x):
a = 1 #기울기
b = -2 #절편
c = -2
#x**2은 2제곱
return a*x**2 + b*x + c
y = quadratic_funtion(x)
plt.plot(x, y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Quadratic Funtion')
def cubic_funtion(x):
a = 4 #기울기
b = 0
c = 1
d = -8
return a*x**3 + b*x**2 + c*x + d
y = cubic_funtion(x)
plt.plot(x,y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Cubic Funtion')
Tensor
深い学習の中で、すべての情報はTenserと呼ばれています.
TenserがあればScara
複数のテンソルが接して方向性を生じ、ベクトルと呼ばれる
2つの方向、2 Dベクトルがあれば、
Tenserの貼るもっと多い方向の上で3つあるならば3 Dベクトルです
4 D以上のベクトルもあります
この天書を表すときはnumpyを使います.
-数値を含むTenser
-イメージがない
Tensor実習
# 0차원 텐서, 스칼라
x = np.array(3) #3이라는 숫자가 들어간 배열이 생성됨
print(x)
print(x.shape) #모양확인
print(np.ndim(x)) #차원 확인
결과)
3
() <= 방향이나 차원이 없기 때문에 괄호만 나온다
0
# 1차원 텐서. 벡터
# 1차원 텐서 2개 생성해서 연산
a = np.array([1,2,3,4])
b = np.array([5,6,7,8])
c = a + b #python에서는 배열끼리 연산이 된다
print(c)
print(c.shape)
print(np.ndim(c))
결과)
[ 6 8 10 12]
(4,)
1
m = np.array(10) #숫자 10이 하나 들어있는 배열 생성
# 0차원 텐서 m과 1차원 벡터 a 연산
d = a * m
print(d)
결과)
[10 20 30 40]
低次元と高次元のテンソルを計算します.下位レベルのデータをコピーし、上位レベルの演算を行います.
Broadcastと申します
1次元と2次元のテンソルを計算しても、同じように1次元のテンソルをコピーして演算します.
# 2차원 텐서, 벡터
a = np.array([[1,2],[3,4]])
#[[1,2],[3,4]] 와 [1,2],[3,4]는 다르다
#[[1,2],[3,4]]는 파라미터 하나이다
print(a)
print(a.shape)
print(a.ndim)
결과)
[[1 2]
[3 4]]
(2, 2)
2
# 2차원 텐서 스칼라 연산
b = np.array([[10,10],[10,10]])
print(a * b)
결과)
[[10 20]
[30 40]]
-改行列行列
a = np.array([[1,2,3], [4,5,6]])
a_ = a.T #전치행렬
print(a)
print(a_)
결과)
[[1 2 3]
[4 5 6]]
[[1 4]
[2 5]
[3 6]]
MNIST手書き画像
#keras 설치가 안되어 있다면 설치
!pip install keras
#tensorflow 설치가 안되어 있다면 설치
!pip install tensorflow
from keras.datasets import mnist
(X_train, y_train), (X_test, y_test) = mnist.load_data()
print(X_train.shape)
print(X_train.ndim)
결과)
(60000, 28, 28)
3
#데이터 6만개, 3차원 데이터
temp_image = X_train[3]
plt.imshow(temp_image, cmap='gray') #흑백
ろんりかいろけんさ
import numpy as np
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
# AND GATE
def AND(x1, x2):
input = np.array([x1,x2]) #입력값
weights = np.array([0.4,0.4]) #가중치
bias = -0.6 #편향치
# 가중치와 편향치에 따라 로직이 바뀐다
value = np.sum(input * weights) + bias
if value <= 0:
return 0
else:
return 1
print(AND(0,0))
print(AND(0,1))
print(AND(1,0))
print(AND(1,1))
결과)
0
0
0
1
# 그래프로 표현
x1 = np.arange(-2, 2, 0.01)
x2 = np.arange(-2, 2, 0.01)
bias = -0.6
y = (-0.4 * x1 - bias) / 0.4
# 수직과 수평의 축을 지정
plt.axvline(x=0)
plt.axhline(y=0)
plt.plot(x1, y, 'r--')
plt.scatter(0,0,color='orange',marker='o',s=150)
plt.scatter(0,1,color='orange',marker='o',s=150)
plt.scatter(1,0,color='orange',marker='o',s=150)
plt.scatter(1,1,color='black',marker='^',s=150)
plt.xlim(-0.5,1.5)
plt.ylim(-0.5,1.5)
plt.grid()
#OR Gate Funtion
def OR(x1, x2):
input = np.array([x1,x2])
weights = np.array([0.4,0.4])
bias = -0.3 #OR는 이 부분만 바꾸면 된다, 나머지는 그대로
value = np.sum(input * weights) + bias
if value <= 0:
return 0
else:
return 1
# AND와 수식은 같고 bias 값만 다르다
print(OR(0,0))
print(OR(0,1))
print(OR(1,0))
print(OR(1,1))
결과)
0
1
1
1
# OR Gate 그래프로 표현
x1 = np.arange(-2, 2, 0.01)
x2 = np.arange(-2, 2, 0.01)
bias = -0.3 #이 부분만 변경, 가중치를 -0.6에서 -0.3으로 낮춤
y = (-0.4 * x1 - bias) / 0.4
# 수직과 수평의 축을 지정
plt.axvline(x=0)
plt.axhline(y=0)
plt.plot(x1, y, 'r--')
plt.scatter(0,0,color='black',marker='^',s=150) #보기 좋게 변경
plt.scatter(0,1,color='orange',marker='o',s=150)
plt.scatter(1,0,color='orange',marker='o',s=150)
plt.scatter(1,1,color='orange',marker='o',s=150)
plt.xlim(-0.5,1.5)
plt.ylim(-0.5,1.5)
plt.grid()
#NAND gate
def NAND(x1, x2):
input = np.array([x1,x2])
weights = np.array([-0.6,-0.6]) #이 부분 변경
bias = 0.7 #이 부분 변경
value = np.sum(input * weights) + bias
if value <= 0:
return 0
else:
return 1
# AND와 수식은 같고 bias 값만 다르다
print(NAND(0,0))
print(NAND(0,1))
print(NAND(1,0))
print(NAND(1,1))
결과)
1
1
1
0
def XOR(x1, x2):
s1 = NAND(x1, x2) #들어온 값을 NAND으로 먼저 처리
s2 = OR(x1, x2) #들어온 값을 OR로 처리
y = AND(s1, s2) #처리한 값들을 AND로 처리
return y
#세가지 게이트를 합쳐서 XOR 게이트를 만들어냄
print(XOR(0,0))
print(XOR(0,1))
print(XOR(1,0))
print(XOR(1,1))
결과)
0
1
1
0
学習後期
今日は昨日よりもっと簡単な内容で、基礎図の描画とニューラルネットワークのようにコードで処理する方法を学び、実習を行いました.
授業を続けてみると、コンピューターは計算できるが、よりよく操作するには数学を勉強しなければならないことが分かった.週末はebsで数学を勉強します.
また、授業が退屈にならないように、先生は開発物語からIT関連の面白い話を始めたので、授業ごとに興味を読まずによく授業についていました.教えてくれたチップや勉強方法も役に立ちます.
Reference
この問題について(AI-Deep Learning 1日目), 我々は、より多くの情報をここで見つけました
https://velog.io/@hanss1122/AI-Deep-Learning
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(AI-Deep Learning 1日目), 我々は、より多くの情報をここで見つけました https://velog.io/@hanss1122/AI-Deep-Learningテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol