[네이버클라우드] AIaaS 개발자 과정/AI

[네이버클라우드캠프] 2023.5.8 AI(2) - 파이썬 기초, 딥러닝 다층 퍼셉트론 실습

_꼬마돌 2023. 5. 8. 21:12
반응형

파이썬 기초

test01.py

# 1. 파이썬 기초
# 변수 저장 출력

a = 1
b = 2
c = a + b
d = a * b

print(a)
print(b)
print(c)
print(d)


# 문자 출력

print('Hello World!')		# 문자열은 '' , "" 로 감싸기

print('makit "code" lab')   	# ""는 ''안에 출력
print("she's gone")         	# ''는 ""안에 출력


# 변수와 문자 출력
a = 10
b = 20
c = a + b
print('a의 값은', a)       	 # 변수와 문자를 구분할 때 , 사용
print('b의 값은', b)
print('a와 b의 합은', c)


# 정수와 문자 연산
a = 10
b = 'makit '
print(a * 3)				# 10 곱하기 3
print(b * 3)				# makit 3번 출력

 

test02.py

# 1. 파이썬 기초
# 리스트
a = [38, 22, 94, 11234, 43523]
print(a)
print(a[0])

# 리스트 문자
b = ['makit', '우진', '시은']
print(b)
print(b[0])
print(b[1])
print(b[2])

# 리스트 정수와 문자 출력
c = [ 'james', 26, 175.4, True]
print(c)

d = ['메이킷', '우진','제임스', '시은']
print(d[0:2])
print(d[0], d[1])

# extend() 함수 사용하여 리스트 이어붙이기
a = ['우진', '시은']
b = ['메이킷', '소피아', '하워드']
a.extend(b)
print(a)
print(b)

c = ['우진', '시은']
d = ['메이킷', '소피아', '하워드']
d.extend(c)
print(d)
print(c)

 

test03.py

import numpy as np			=> numpy 라이브러리 불러오기

a = np.array([[1, 2, 3],[4, 5, 6]])
print('안바꾼거 : \n', a)

a_transpose = np.transpose(a)	=> 행렬 바꿔주는 함수
print('바꾼거 :\n', a_transpose)
#  바꾼거 :
#  [[1 4]
#  [2 5]
#  [3 6]]

a_reshape = np.reshape(a, (3,2))	=> 행렬 바꿔주는 함수
print('reshape 바꾼거 : \n', a_reshape)	
# reshape 바꾼거 :
#  [[1 2]
#  [3 4]
#  [5 6]]

# transpose()와 reshape()의 차이점:
# transpsee()는 데이터의 순서대로 바뀜
# reshape()은 데이터를 변형해서 바뀜

딥러닝 다층 퍼셉트론 실습

연속되는 수 예측하기

# 1. 데이터
import numpy as np
x = np.array([1, 2, 3])
y = np.array([1, 2, 3])

# 2. 모델구성
from keras.models import Sequential
from keras.layers import Dense 

model = Sequential()
model.add(Dense(10, input_dim=1))     # 입력층
model.add(Dense(5))                   # 히든레이어
model.add(Dense(7))                   # 히든레이어
model.add(Dense(5))                   # 히든레이어
model.add(Dense(1))                   # 출력층

# 3. 컴파일, 훈련
model.compile(loss='mse', optimizer='adam')
model.fit(x, y, epochs=1000)

# 4. 예측, 평가
loss = model.evaluate(x, y)
print('loss : ', loss)               # loss : 3.1487465412816107e-10

result = model.predict([4])          # 4의 예측값 : 3.999965
print('4의 예측값', result)

4에 거의 근접한 결과가 나왔다.

 

연속되지 않는 수 예측하기

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# 1. 데이터
x = np.array([1, 2, 3, 5, 4])
y = np.array([1, 2, 3, 4, 5])

# 2. 모델구성
model = Sequential()
model.add(Dense(64, input_dim=1))   # 입력층
model.add(Dense(128))               # 히든레이어
model.add(Dense(256))               # 히든레이어
model.add(Dense(128))               # 히든레이어
model.add(Dense(64))                # 히든레이어
model.add(Dense(1))                 # 출력층

# 3. 컴파일, 훈련
model.compile(loss='mse' , optimizer='adam')    # w값이 (-)일때 'mae' 사용
model.fit(x, y, epochs=50, batch_size=32)
# 4. 예측, 평가
loss = model.evaluate(x, y)    # loss :  0.39812880754470825
print('loss : ', loss)

result = model.predict([6])
print('6의 예측값 : ', result)  # 6의 예측값 :  [[6.005654]]

 

2행 예측

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# 1. 데이터
x = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
              [1, 2, 1, 1, 2, 1.1, 1.2, 1.4, 1.5, 1.6]])
y = np.array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])

print(x.shape)  # (2, 10)
print(y.shape)  # (10,)

x = x.transpose()
# x = x.T
print(x.shape)  # (10, 2)

# 2. 모델구성
model = Sequential() 
model.add(Dense(64, input_dim=2))   # 입력층
model.add(Dense(128))               # 히든레이어
model.add(Dense(256))               # 히든레이어
model.add(Dense(128))               # 히든레이어
model.add(Dense(64))                # 히든레이어
model.add(Dense(1))                 # 출력층

# 3. 컴파일, 훈련
model.compile(loss='mse', optimizer='adam')
model.fit(x, y, epochs=500, batch_size=16)

# 4. 평가, 예측
loss = model.evaluate(x, y)
print('loss : ', loss)                     # loss :  6.639311496414724e-12

result = model.predict([[10, 1.6]])
print('[10]과 [1.6]의 예측값 : ', result)   # [10]과 [1.6]의 예측값 :  [[20.]]

 

과제: 3행 예측

import numpy as np
from keras.models import Sequential
from keras.layers import Dense

# 1. 데이터
x = np.array([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
              [1, 2, 1, 1, 2, 1.1, 1.2, 1.4, 1.5, 1.6],
              [10, 9, 8, 7, 6, 5, 4, 3 ,2 ,1]])
y = np.array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])

# 미션:
# 모델구성부터 평가예측까지 완성하시오. 
# 예측값은 [[10, 1.6, 1]] 20 나오도록.

print(x.shape)  # (2, 10)
print(y.shape)  # (10,)

x = x.transpose()
# x = x.T
print(x.shape)  # (10, 2)

# 2. 모델구성
model = Sequential() 
model.add(Dense(64, input_dim=3))   # 입력층
model.add(Dense(128))               # 히든레이어
model.add(Dense(256))               # 히든레이어
model.add(Dense(128))               # 히든레이어
model.add(Dense(64))                # 히든레이어
model.add(Dense(1))                 # 출력층

# 3. 컴파일, 훈련
model.compile(loss='mse', optimizer='adam')
model.fit(x, y, epochs=500, batch_size=16)

# 4. 평가, 예측
loss = model.evaluate(x, y)
print('loss : ', loss)                         # loss :  1.1186785005279365e-11        

result = model.predict([[10, 1.6, 1]])
print('[10]과 [1.6]과 [1]의 예측값 : ', result) 
# [10]과 [1.6]과 [1]의 예측값 :  [[20.000004]]


반응형