。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/AI

AI

quarrrter 2023. 5. 8. 18:00

아나콘다에서 리스트 확인 

가상환경 리스트 확인
(tf210) C:\Users\bitcamp>conda env list
# conda environments:
#
base                     C:\Users\bitcamp\anaconda3
tf210                 *  C:\Users\bitcamp\anaconda3\envs\tf210

가상환경 탈출 ~
(tf210) C:\Users\bitcamp>deactivate
DeprecationWarning: 'deactivate' is deprecated. Use 'conda deactivate'.

(tf210) C:\Users\bitcamp>conda.bat deactivate

라이브러리 확인
(tf210) C:\Users\bitcamp>conda list
# packages in environment at C:\Users\bitcamp\anaconda3\envs\tf210:
#
# Name                    Version                   Build  Channel
_tflow_select             2.3.0                       mkl
abseil-cpp                20211102.0           hd77b12b_0
absl-py                   1.3.0           py310haa95532_0
.
.
.
파이썬 버전 확인
(tf210) C:\Users\bitcamp>python -V
Python 3.10.11


파이썬 들어가기
(tf210) C:\Users\bitcamp>python
Python 3.10.11 | packaged by Anaconda, Inc. | (main, Apr 20 2023, 18:56:50) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow as tf           //텐서플로 라이브러리를 가지고 오는데 tf라는 이름으로 불러오겠다
>>> tf.__version__            //텐서플로 버전 확인
'2.10.0'
>>> exit()
주석처리 
범위잡고 컨트롤 슬래시
#
''' '''

줄바꿈
\n

돌리기
컨트롤 f5

 

파이썬 기초

# 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\n'      // \n 줄바꿈 
"she's gone")

---------------
#변수와 문자출력
a=10
b=20
print("a의 값은 ", a)  #콤마로 구분 
print("b의 값은 ", b) 
print("a와 b의 합은 ", a+b) 

---------------
#정수와 문자 연산
a = 10
b = 'makit '
print(a * 3)
print(b * 3)        // 값: makit makit makit

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

# 리스트를 출력하기 
print(d[0:2])   #2를 넣으면 2앞까지 나옴. 따라서 0부터 1까지, 0을 안 넣으면, 그러니까 아무것도 안 쓰면 0번째부터출력력
print(d[1:4])
print(d[2:4])
print(d[0:4])

# extend() 함수사용하여 리스트 이어붙이기
e = ['우진', '시은']
f = ['메이킷', '소피아', '하워드']
e.extend(f)      #e뒤에 f를 붙이겠다 , 두개의 데이터(리스트)를 이을 때 사용, append랑 다름, append는 통채로 붙임
print(e)
print(f)

 

transpose()와 reshape 

import numpy as np

a = np.array([[1, 2 ,3],[4, 5, 6]]) # 리스트가 두개면 리스트를 리스트로 묶어줘야함
print("Original: \n", a)  #\n 줄바꿈 \t 띄어쓰기기

a_transpose = np.transpose(a)
print("Transpose :\n", a_transpose)
'''
 [[1 4]
 [2 5]
 [3 6]]
 '''

b = np.array([[1,2,3],[4,5,6]])
print("Original: \n", a)

b_reshape=np.reshape(b, (3,2))
print("reshape :\n", b_reshape)
'''
reshape :
 [[1 2]
 [3 4]
 [5 6]]
'''

#transpose()와 reshape()의 차이 : trans는 두개의 리스트 순서대로 하나씩 짝 지어주고 
# reshape은 두개 리스트를 하나의 리스트로 합치고 (3,2)면 리스트 세개를 2개씩(행,열)
#시간 관련 데이터는 transpose 이용

 

딥러닝은 순서가 있음


1.데이터를 가져오기
2.모델링 구성(이렇게 훈련시킬거야,input hidden rayer, output)
3.컴파일( loss 손실함수(실제값과 예측값이 얼마나 차이나는지 확인해서 오차범위확인해서 최적의 w값 확인하기/loss의 함수 中 mse: 제곱값, 교차함수, mae도 있음), optimizer(中 adam: 정확도 예측, 속도 중요해서 최적의 값 찾는방법,,?) 가 핵심) mse와 adam이 가장 우수한 성량을 냄
3-1, 훈련 model.fit //(epochs 훈련양, 얼마나 훈련할거야, 너무 많이 하면 오버피팅됨(과적합)훈련데이터에만 집중되어서 앞으로나올 값을 예측못함, 그래서 값이 클수록 좋은 것도 아님 100부터 차근차근 높혀보기)
4.평가, & 예측
loss가 0에 가까운 수 찾기 

 

#라이브러리 정리
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 ]])  #리스트 안에 리스트 두개 2차원배열열
y = np.array([11, 12, 13, 14, 15, 16, 17, 18, 19, 20])

print(x.shape)  #(2,10)  행과 열
print(y.shape)  #(10,)   행           x와 y의 행열을 맞춰야함

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


#2. 모델구성 
model = Sequential()
model.add(Dense(50, input_dim=2))  #입력층
model.add(Dense(100))	#은닉층(히든레이어)
model.add(Dense(300))
model.add(Dense(350))
model.add(Dense(500))
model.add(Dense(1))	 #출력층

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

#4. 평가, 예측
loss = model.evaluate(x,y)
print("loss는 " , loss)

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

#2 모델 구성

  • Sequential은 Keras에서 모델을 생성할 때 사용되는 함수로, 모델을 생성하고 각 층(layer)을 추가해 나가는 방식으로 모델을 구성합니다.
  • Dense는 Keras에서 사용되는 층 중 하나로, fully connected layer라고도 부릅니다. 입력과 출력 사이의 모든 노드가 서로 연결된 층입니다.

위 코드에서 첫 번째 줄에서는 model을 생성하고, 두 번째 줄에서는 입력층을 추가합니다. 입력층은 2개의 노드(input_dim=2)를 가지며, 뒤에 따라오는 Dense 층들과 연결됩니다.

세 번째 줄부터는 각각의 Dense 층을 추가합니다. 층의 노드 수는 첫 번째 층부터 순서대로 50, 100, 300, 350, 500으로 설정되어 있습니다.

마지막으로, 출력층으로 Dense 층을 하나 추가하고 출력 노드 수를 1로 설정합니다. 이 모델은 입력값으로 2개의 특성을 받아들여서, 최종적으로 하나의 값을 출력하는 모델입니다.

 

모델을 생성한다

딥러닝 모델의 아키텍처를 정의하는 것. 

먼저 어떤 층과 노드를 사용할지, 각 층과 노드의 크기를 어떻게 할지 정하는 것.

 

#라이브러리 정리
import numpy as np 		 #numpy 패키지를 np라는 이름으로 불러오는 것
from keras.models import Sequential		#keras 패키지에서 Sequential 모델을 불러오는 것
from keras.layers import Dense		#keras 패키지에서 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])


x= x.transpose()
print(x.shape)

# 모델구성부터평가예측까지 완성하시오 
# 예측 [[10, 1.6, 1]] 값은 20나와야함 

model = Sequential()
model.add(Dense(10, input_dim=3))
model.add(Dense(100))
model.add(Dense(1))

model.compile(loss='mse', optimizer='adam')		#모델 컴파일 단계 설정.
model.fit(x,y,epochs=100, batch_size=5)		#모델학습(fit)설정. 

loss = model.evaluate(x,y)
print("loss는 ", loss)

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

''' loss는  0.12616786360740662
1/1 [==============================] - 0s 161ms/step
10과 1.6, 1의 예측값:  [[20.086897]] '''

모델 학습(fit)은 생성한 모델에 대해 실제 데이터를 통해 가중치(weight)를 조정하는 과정입니다. 모델이 예측한 출력값과 실제 정답 데이터 간의 오차를 최소화하는 방향으로 가중치를 조정하여 모델의 성능을 개선합니다.

모델 학습(fit) 메소드는 다음과 같은 인자들을 받습니다.

  • x: 모델의 입력값 데이터입니다.
  • y: 모델의 정답 데이터입니다.
  • epochs: 전체 데이터셋에 대해 학습을 반복할 횟수입니다.
  • batch_size: 한 번에 학습할 데이터의 개수입니다.
  • loss: 모델의 손실 함수(loss function)입니다.
  • optimizer: 모델의 최적화 알고리즘입니다.

학습이 진행되면서 손실 함수의 값이 감소하고, 모델이 주어진 데이터셋에 대해 더욱 정확한 예측을 할 수 있도록 가중치가 조정됩니다.

 

model.compile() 함수는 모델 학습 전에 필요한 설정을 하는 함수입니다. 이 함수를 사용하여 손실 함수(loss function)와 최적화 알고리즘(optimizer)을 지정합니다.

여기서 loss='mse'는 평균 제곱 오차(mean squared error)를 손실 함수로 사용한다는 의미입니다. 이는 모델이 예측한 값과 실제 값 간의 차이의 제곱을 평균한 것을 손실 함수로 사용한다는 의미입니다.

optimizer='adam'은 최적화 알고리즘으로 Adam 알고리즘을 사용한다는 의미입니다. Adam은 학습 속도를 조절하면서 모델의 가중치를 업데이트하는 방법 중 하나입니다. 이러한 최적화 알고리즘을 사용하여 모델이 더 빠르고 정확하게 수렴하도록 할 수 있습니다.

'[네이버클라우드] 클라우드 기반의 개발자 과정 7기 > AI' 카테고리의 다른 글

Ai 개념 정리 3  (1) 2023.05.10
[수업자료] Ai 3일차 코드  (0) 2023.05.10
ai 개념정리 2  (1) 2023.05.10
[수업자료] Ai 2일차 코드  (1) 2023.05.09
AI 개념 정리  (2) 2023.05.08