TensorFlow 튜토리얼 – TensorFlow를 사용한 딥 러닝



TensorFlow 튜토리얼은 시리즈의 세 번째 블로그입니다. 여기에는 TensorFlow의 모든 기본 사항이 포함됩니다. 또한 간단한 선형 모델을 만드는 방법에 대해서도 설명합니다.

저는 TensorFlow를 사용하여 다양한 문제를 해결하기 위해 딥 러닝 알고리즘을 적용하는 데 관심이있는 전문가와 매니아를 위해이 TensorFlow 튜토리얼을 설계했습니다. TensorFlow는 모델 구축을위한 데이터 흐름 그래프의 개념을 기반으로하는 오픈 소스 딥 러닝 라이브러리입니다. 여러 계층이있는 대규모 신경망을 만들 수 있습니다.이 라이브러리의 사용법을 배우는 것도 .다음은이 TensorFlow 튜토리얼 블로그에서 논의 될 주제입니다.

  • TensorFlow 란?
  • TensorFlow 코드 기본 사항
  • TensorFlow 사용 사례

텐서는 무엇입니까?

이 TensorFlow 자습서에서는 TensorFlow에 대해 이야기하기 전에 먼저 텐서는 무엇입니까 . Tensor는 딥 러닝에서 데이터를 표현하기위한 사실상의 것입니다.





Tensors-TensorFlow 튜토리얼-Edureka위 이미지에서 볼 수 있듯이 텐서는 다차원 배열 일 뿐이므로 더 높은 차원의 데이터를 나타낼 수 있습니다. 일반적으로 딥 러닝은 차원이 데이터 세트에 존재하는 다양한 특징을 참조하는 고차원 데이터 세트를 다룹니다. 사실“TensorFlow”라는 이름은 신경망이 텐서에서 수행하는 연산에서 파생되었습니다. 말 그대로 텐서의 흐름입니다. 텐서가 무엇인지 이해 하셨으므로이 TensorFlow 튜토리얼에서 계속 진행하여 이해하겠습니다. TensorFlow 란 무엇입니까?

TensorFlow 란 무엇입니까?

TensorFlow는 딥 러닝 모델을 구현하기위한 다양한 유형의 기능을 제공하는 Python 기반 라이브러리입니다. 앞에서 설명한 것처럼 TensorFlow라는 용어는 Tensor와 Flow의 두 가지 용어로 구성됩니다.



TensorFlow에서 텐서라는 용어는 데이터를 다차원 배열로 표현하는 반면 흐름이라는 용어는 위의 이미지에 표시된 것처럼 텐서에서 수행하는 일련의 작업을 나타냅니다.

이제 TensorFlow에 대한 충분한 배경 ​​지식을 다루었습니다.



다음으로이 TensorFlow 튜토리얼에서는 TensorFlow 코드 기본 사항에 대해 논의 할 것입니다.

TensorFlow 자습서 : 코드 기본 사항

기본적으로 TensorFlow 프로그램을 작성하는 전체 프로세스에는 두 단계가 포함됩니다.

  1. 계산 그래프 작성
  2. 계산 그래프 실행

위의 두 단계를 하나씩 설명하겠습니다.

1. 계산 그래프 작성

그래서, 계산 그래프 란 무엇입니까? 음, 계산 그래프는 그래프에서 노드로 배열 된 일련의 TensorFlow 작업입니다. 각 노드는 0 개 이상의 텐서를 입력으로 사용하고 출력으로 텐서를 생성합니다. 세 개의 노드로 구성된 간단한 계산 그래프의 예를 들어 보겠습니다. ...에 , & 아래 그림과 같이:

위의 계산 그래프에 대한 설명 :

  • 상수 노드0 입력을 취하므로 상수 값을 저장하는 데 사용되지만 저장된 값을 출력으로 생성합니다. 위의 예에서 a와 b는 각각 값이 5와 6 인 상수 노드입니다.

  • 노드 c는 상수 노드 a와 b를 곱하는 연산을 나타냅니다. 따라서 노드 c를 실행하면 const 노드 a와 b가 곱해집니다.

기본적으로 컴퓨팅 그래프는 TensorFlow 프로그램에서 발생하는 수학적 계산을 개념화하는 대체 방법으로 생각할 수 있습니다. 계산 그래프의 서로 다른 노드에 할당 된 작업을 병렬로 수행 할 수 있으므로 계산 측면에서 더 나은 성능을 제공합니다.

여기에서는 계산에 대해 설명하고, 아무것도 계산하지 않고, 값을 보유하지 않으며, 코드에 지정된 작업을 정의 할뿐입니다.

2. 계산 그래프 실행

계산 그래프의 이전 예를 살펴보고 실행 방법을 이해하겠습니다. 다음은 이전 예제의 코드입니다.

예 1 :

import tensorflow as tf # 그래프 작성 a = tf.constant (5.0) b = tf.constant (6.0) c = a * b

이제 노드 c의 출력을 얻으려면 a 내에서 계산 그래프를 실행해야합니다. 세션 . 세션은 그래프 작업을 CPU 또는 GPU와 같은 장치에 배치하고이를 실행하는 방법을 제공합니다.

세션은 TensorFlow 런타임의 제어 및 상태를 캡슐화합니다. 즉, 모든 작업이 수행되는 순서에 대한 정보를 저장하고 이미 계산 된 작업의 결과를 파이프 라인의 다음 작업에 전달합니다. 세션 내에서 위의 계산 그래프를 실행하는 방법을 보여 드리겠습니다 (각 코드 줄에 대한 설명이 주석으로 추가되었습니다).

# 세션 객체 생성 sess = tf.Session () # 세션 내에서 그래프를 실행하고 출력을 변수에 저장 output_c = sess.run (c) # 노드 c의 출력을 인쇄합니다 print (output_c) # 세션을 종료합니다 일부 리소스 확보 sess.close ()
 산출: 30

그래서, 이것은 세션과 그 안에서 계산 그래프를 실행하는 것에 관한 것입니다. 이제 TensorFlow를 사용하여 딥 러닝 모델을 구축하는 동안 광범위하게 사용할 변수와 자리 표시 자에 대해 이야기하겠습니다.

자바를 사용하여 셀레늄 웹 드라이버에서 스크린 샷을 찍는 방법

상수, 자리 표시 자 및 변수

TensorFlow에서 상수, 자리 표시 자 및 변수는 딥 러닝 모델의 다양한 매개 변수를 나타내는 데 사용됩니다. 앞서 상수에 대해 이미 논의 했으므로 자리 표시 자부터 시작하겠습니다.

자리 표시 자 :

TensorFlow 상수를 사용하면 값을 저장할 수 있지만 노드가 실행 중에 입력을 받도록하려면 어떻게해야합니까? 이러한 종류의 기능을 위해 그래프가 외부 입력을 매개 변수로 사용할 수 있도록하는 자리 표시자가 사용됩니다. 기본적으로 자리 표시자는 나중에 또는 런타임 중에 값을 제공하겠다는 약속입니다. 더 간단하게하기위한 예를 들어 보겠습니다.

import tensorflow as tf # 자리 표시 자 만들기 a = tf. placeholder (tf.float32) b = tf. placeholder (tf.float32) # 곱셈 연산을 w.r.t에 할당합니다. a & amp b to node mul = a * b # 세션 객체 생성 sess = tf.Session () # a와 b에 각각 [1, 3] [2, 4] 값을 전달하여 mul 실행 output = sess.run ( mul, {a : [1,3], b : [2, 4]}) print ( 'Multiplying ab :', output)
 산출: [2. 12.]

기억해야 할 사항 자리 표시 자 :

  • 자리 표시자는 초기화되지 않으며 데이터를 포함하지 않습니다.
  • 런타임 중에 고려되는 자리 표시 자에 입력 또는 피드를 제공해야합니다.
  • 입력없이 자리 표시자를 실행하면 오류가 발생합니다.

이제 앞으로 나아가서 이해합시다. 변수 란 무엇입니까?

변수

딥 러닝에서 자리 표시자는 모델 또는 그래프에서 임의의 입력을받는 데 사용됩니다. 입력을받는 것 외에도 새로운 출력을 생성 할 수 있도록 그래프를 수정해야합니다. 동일한 입력. 이를 위해 변수를 사용합니다. 간단히 말해 변수를 사용하면 학습 가능한 그래프에 이러한 매개 변수 또는 노드를 추가 할 수 있습니다. 즉, 값은 일정 기간 동안 수정할 수 있습니다. 변수는 아래와 같이 초기 값과 유형을 제공하여 정의됩니다.

var = tf.Variable ([0.4], dtype = tf.float32)

노트 :

  • 데이터 유형을 명시 적으로 제공하지 않은 경우 TensorFlow는 초기화 된 값에서 상수 / 변수 유형을 추론합니다.
  • TensorFlow에는 다음과 같은 자체 데이터 유형이 많이 있습니다. tf.float32 , tf.int32 기타 당신은 그들 모두를 참조 할 수 있습니다 여기 .

호출하면 상수가 초기화됩니다. tf.constant , 그 가치는 절대 변하지 않습니다. 반대로 호출 할 때 변수가 초기화되지 않습니다. tf.Variable . TensorFlow 프로그램의 모든 변수를 초기화하려면 절대로 필요한 것 아래와 같이 특수 작업을 명시 적으로 호출합니다.

init = tf.global_variables_initializer () sess.run (init)

그래프를 처음 사용하기 전에 변수를 초기화해야한다는 점을 항상 기억하십시오.

노트 : TensorFlow 변수는 텐서를 포함하는 메모리 내 버퍼이지만 그래프가 실행될 때만 인스턴스화되고 나중에 즉시 삭제되는 일반 텐서와 달리 변수는 여러 그래프 실행에서 유지됩니다.

이제 TensorFlow의 기초를 충분히 다루었으므로 TensorFlow를 사용하여 선형 회귀 모델을 구현하는 방법을 이해하겠습니다.

TensorFlow를 사용한 선형 회귀 모델

선형 회귀 모델은 다음과 같이 선형 회귀 방정식을 사용하여 다른 변수 (독립 변수)의 알려진 값에서 변수 (종속 변수)의 알 수없는 값을 예측하는 데 사용됩니다.

따라서 선형 모델을 생성하려면 다음이 필요합니다.

  1. 종속 또는 출력 변수 (Y)
  2. 경사 변수 (w)
  3. Y-절편 또는 바이어스 (b)
  4. 독립 또는 입력 변수 (X)

이제 TensorFlow를 사용하여 선형 모델 구축을 시작하겠습니다.

아래 버튼을 클릭하여 코드를 복사하십시오.

# 초기 값이 0.4 인 매개 변수 기울기 (W) 변수 생성 W = tf.Variable ([. 4], tf.float32) # 초기 값이 -0.4 인 매개 변수 편향 (b) 변수 생성 b = tf.Variable ( [-0.4], tf.float32) # 입력 또는 독립 변수를 제공하기위한 자리 표시 자 생성, xx = tf.placeholder (tf.float32) # 선형 회귀 방정식 linear_model = W * x + b # 모든 변수 초기화 sess = tf.Session () init = tf.global_variables_initializer () sess.run (init) # 회귀 모델을 실행하여 출력 wrt 계산 x 값을 제공하려면 print (sess.run (linear_model {x : [1, 2, 3, 4]}))

산출:

[0. 0.40000001 0.80000007 1.20000005]

위에 언급 된 코드는 회귀 모델 구현의 기본 아이디어, 즉 회귀선 방정식을 따라 출력 w.r.t를 얻는 방법을 나타냅니다. 입력 값 세트. 그러나 완전한 회귀 모델을 만들기 위해이 모델에 추가해야 할 두 가지가 더 있습니다.

  • 먼저, 모델이 주어진 입력 및 각 출력 세트를 기반으로 자동으로 학습 할 수있는 메커니즘을 제공해야합니다.
  • 두 번째로 필요한 것은 주어진 x 값 세트를 기반으로 원하는 출력과 목표 출력을 비교하여 훈련 된 모델의 유효성을 검사하는 것입니다.

이제 회귀 모델을 위해 위에서 언급 한 기능을 코드에 어떻게 통합 할 수 있는지 이해하겠습니다.

손실 함수 – 모델 검증

손실 함수는 모델의 현재 출력이 원하는 출력 또는 목표 출력의 출력과 얼마나 떨어져 있는지 측정합니다. 선형 회귀 모델에 가장 일반적으로 사용되는 손실 함수 인 Sum of Squared Error 또는 SSE를 사용하겠습니다. SSE 계산 w.r.t. 모델 출력 (linear_model으로 표시) 및 원하는 또는 대상 출력 (y) :

y = tf.placeholder (tf.float32) 오류 = linear_model-y squared_errors = tf.square (error) loss = tf.reduce_sum (squared_errors) print (sess.run (loss, {x : [1,2,3,4) ], y : [2, 4, 6, 8]})
 산출: 90.24

보시다시피, 우리는 높은 손실 가치를 얻고 있습니다. 따라서 우리가받는 오류를 줄이기 위해 가중치 (W)와 편향 (b)을 조정해야합니다.

f.train API – 모델 훈련

TensorFlow는 최적화 프로그램 손실 함수 또는 오류를 최소화하기 위해 각 변수를 천천히 변경합니다. 가장 간단한 최적화 프로그램은 경사 하강 법 . 해당 변수에 대한 손실의 미분의 크기에 따라 각 변수를 수정합니다.

#Gradient Descent Optimizer의 인스턴스 생성 optimizer = tf.train.GradientDescentOptimizer (0.01) train = optimizer.minimize (loss) for i in range (1000) : sess.run (train, {x : [1, 2, 3, 4], y : [2, 4, 6, 8]}) print (sess.run ([W, b]))
 산출: [배열 ([1.99999964], dtype = float32), 배열 ([9.86305167e-07], dtype = float32)]

따라서 이것은 TensorFlow를 사용하여 선형 모델을 만들고 원하는 출력을 얻도록 훈련시키는 방법입니다.

이제 딥 러닝에 대해 알았으니 전 세계에 250,000 명 이상의 만족 한 학습자 네트워크를 보유한 신뢰할 수있는 온라인 학습 회사 인 Edureka에서 작성했습니다. TensorFlow를 사용한 Edureka Deep Learning 교육 과정은 학습자가 SoftMax 기능, 자동 인코더 신경망, RBM (Restricted Boltzmann Machine)과 같은 개념과 함께 실시간 프로젝트 및 할당을 사용하여 기본 및 컨볼 루션 신경망을 교육하고 최적화하는 전문가가 될 수 있도록 도와줍니다.

질문이 있으십니까? 의견란에 언급 해 주시면 연락 드리겠습니다.