728x90
이번에는 python에 있는 Tensorflow를 이용하여 딥러닝의 기본 모델 학습을 해볼 것이다.
- 텐서플로로 표현한 선형회귀 모델
class MyModel(tf.keras.Model):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.w = tf.Variable(tf.ones([1,1])) #기울기
self.b = tf.Variable(tf.ones([1])) #y절편
def call(self,x): #x:데이터 x좌표
return tf.matmul(x,self.w) + self.b
#모델 선언 및 최적화 방법 결정
#예측 모델 설정
model = MyModel()
#수치최적화 알고리즘 설정
MaxEpoch = 25
lr = 0.25
optimizer = optimizers.SGD(lr)
#결정론적 방법
for epoch in range(MaxEpoch):
with tf.GradientTape() as tape:
curr_loss = loss(y_train, model(x_train))
gradients = tape.gradient(curr_loss, model.trainable_variables)
if epoch % 5 == 0:
print(model.w.numpy(), model.b.numpy(), curr_loss.numpy())
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
#배치 사용을 안해서 전체 데이터 이용하였음.
스토캐스틱 방법을 이용하고 싶다면,
#스토캐스틱 방법
batch_size = 5
for epoch in range(MaxEpoch):
if epoch % 5 == 0:
curr_loss = loss(y_train, model(x_train))
print(model.w.numpy(), model.b.numpy(), curr_loss.numpy())
#이 부분이 생김
for x_batch, y_batch in generate_batches(batch_size, shuffled_x_train, shuffled_y_train):
with tf.GradientTape as tape:
curr_loss = loss(y_batch, model(x_batch))
gradients = tape.gradient(curr_loss, model.trainable_variables)
optimizer.apply_gradients(zip(gradients, model.trainable_variables))
728x90
반응형
'Math > Numerical Analysis' 카테고리의 다른 글
[수치해석] 신경망 모델 (0) | 2022.02.11 |
---|---|
[수치해석] 수치최적화 알고리즘2 (Adagrad, RMSProp, Adam) (0) | 2022.02.11 |
[수치해석] 수치최적화 알고리즘(SGD, Momentum) (0) | 2022.02.11 |