머신러닝 17일차

ParkJinYoung·2022년 11월 9일
0

퍼셉트론, 다층 퍼셉트론 : (MLP)

퍼셉트론 : 인공신경망

모든 곱의 합=> 활성화함수 f(x)에 전달 => y(예측값)
✔✔활성화함수 : activation '값'
-sigmoid : binary_crossentropy (compile => loss : '값')
입력층, 모든값을 0,1로 나누어서 평가한다.
-softmax : categorical_crossentropy
출력층, 각 클래스별로 몇퍼센트로 예측했는지 나타낸다 활성화 함수
-linear : mean_squared_error
다층 퍼셉트론에서 활성화함수 f(x)의 연결은
학습의 과정
-순전파 : 입력층에서부터 출력층으로 데이터를 전파시키며 예측값을 출력, 출력된 예측값과 실제 값을 비교해서 에러 계산 => 추론
-역전파 : 에러를 출력층에서 입력층으로 전파시키면서 모델을 개선, 가중치를 수정(미분) => 학습
-기울기소실(역전파시) : sigmoid에서 가장 많이 발생 => sigmoid는 미분시 0~0.25로 값이 변함, tach에서도 발생 => 미분시 0~0.5 사이로 값이 변함

# 회귀
from tensorflow.keras.datasets import boston_housing
(X_train, y_train),(X_test,y_test) = boston_housing.load_data()

# 데이터 확인시 : 특성의 수 / (이진, 다중)분류 or 회귀
X_train.shape

# 딥러닝 모델, 설계
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

model = Sequential()
# add 층은 최소 한개의 층을 가져야하지만 선형함수와 다름이없으므로 의미없다고 생각하면된다.
model.add(Dense(30, input_dim=13,activation='relu')) # 입력층
model.add(Dense(15, activation='relu')) # 은닉층
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='linear')) # 출력층

model.summary()

model.compile(
    loss = 'mean_squared_error',
    optimizer = 'adam', 
    metrics = ['mean_squared_error'] # 생략이 가능하다
)

model.fit(X_train,y_train,epochs=100,
          validation_data=(X_test,y_test), # 검증 데이터
          # 한번에 학습할 데이터수 , 컴퓨터 성능에 따라 개수의 기준을 정해 나눠서 학습한다
          batch_size = 10 
          )
          
model.predict(X_test[:10])
model.evaluate(X_test,y_test)
model.evaluate(X_train,y_train)
profile
꾸준히

0개의 댓글