[AI] Tensorflow 예제실행

개발Velog·2020년 8월 3일
1

DeepLearning

목록 보기
7/10

📊 TenserFlow 예제 실습

TensorFlow 기본 개념을 간단하게 살펴보았고
(Tensorflow 기본개념✌)

본격적으로 TensorFlow 예제를 실습을 해볼 예정이다.

Tensorflow의 개념을 공부해보자

Tensorflow 예제를 돌려보자

내가 원하는 데이터로 학습을 시키고 결과를 도출해보자


📈 Tensorflow 1.15

TensorFlow 2.0을 실행하기 전에 1.15버전을 먼저 사용해볼 예정(기초탄탄)

✍🏻tensorflow downgrade하는 법

================================================
!pip uninstall tensorflow
!pip install tensorflow==1.15
================================================

✍🏻Linear Regression : feed from variable 예제

import tensorflow as tf

# Model parameters
W = tf.Variable([.3], tf.float32)
b = tf.Variable([-.3], tf.float32)

# Model input and output
x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)

linear_model = x * W + b

# cost/loss function
loss = tf.reduce_sum(tf.square(linear_model - y))  # sum of the squares

# optimizer
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

# training data
x_train = [1, 2, 3, 4]
y_train = [0, -1, -2, -3]

# training loop
init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)  # reset values to wrong

for i in range(1000):
    sess.run(train, {x: x_train, y: y_train})

# evaluate training accuracy
curr_W, curr_b, curr_loss = sess.run([W, b, loss], feed_dict={x: x_train, y: y_train})
print("W: %s b: %s loss: %s" % (curr_W, curr_b, curr_loss))

결과
W: [-0.9999969] b: [0.9999908] loss: 5.6999738e-11

✍🏻Variable 사용

W = tf.Variable([.3], tf.float32)
b = tf.Variable([-.3], tf.float32)

  • 양수 4개, 음수 4개 담을 변수 선언

    Variable란?

    • 변수이며 Weight값을 저장할 때 주로 사용

✍🏻Placeholder 사용

x = tf.placeholder(tf.float32)
y = tf.placeholder(tf.float32)

  • rank가 1이면서 type이 tf.float32인 placeholder 생성

    placeholder란?

    • 일정값을 받을 수 있게 만들어주는 그릇(학습용 데이터를 저장하는 그릇)
    • 다른 자료형을 매핑하여 텐서로 변경해주는 역할
    placeholder(
        dtype,
        shape=None,
        name=None
    )

    dtype : 데이터 타입을 의미하며 반드시 적어야 함.
    shape : 입력 데이터의 형태를 의미한다. 상수 값 or 다차원 배열
    ( 디폴트 파라미터로 None 지정 )
    name : 해당 placeholder의 이름을 부여하는 것.
    ( 디폴트 파라미터로 None 지정 )

✍🏻소스 설명

loss = tf.reduce_sum(tf.square(linear_model - y)) # 제곱의 합
optimizer = tf.train.GradientDescentOptimizer(0.01) # 요청된 학습률에 gradients를 적용('경사하강법' 사용)
train = optimizer.minimize(loss) # minimize 함수는 글자 그대로 최소 비용을 찾아주는 함수

경사하강법 = 파라미터를 임의로 정한 다음에 조금씩 변화시켜가며
손실을 점점 줄여가는 방법

init = tf.global_variables_initializer() #세션에 초기화 연산을 수행해야 하며, 변수에 메모리를 할당하고 초기값을 설정하는 역할

profile
안녕하세요. 데이터와 동고동락 중인 개발자 입니다.

0개의 댓글