Tensorflow 기초

최한빈·2023년 11월 28일

딥러닝

목록 보기
2/10

텐서플로는 딥러닝 프레임워크로 유명하지만, 사실 딥러닝용으로만 사용할 수 있는 것은 아니다. 텐서플로는 그래프 형태의 수학식 계싼을 수행하는 핵심 라이브러리를 구현한 후, 그 위에 딥러닝을 포함한 여러 머신러닝을 쉽게 할 수 있는 다양한 라이브러리를 올린 형태이다.

hello 변수의 값을 출력한 결과로, hello가 텐서플로의 텐서라는 자료형이고, 상수를 담고 있음을 의미한다.

텐서는 텐서플로에서 다양한 수학식을 계산하기 위한 가장 기본적이고 중요한 자료형이고,
랭크와 셰이프라는 개념을 가지고 있다.

텐서 자료형의 형태는 배열과 비슷하다고 생각하면 된다. 보는 바와 같이 랭크는 차원의 수를 나타내는 것으로 랭크가 0이면 스칼라, 1이면 벡터, 2면 행렬, 3 이상이면 n-Tensor 또는 n차원 텐서라고 부른다. 그리고 셰이프는 각 차원의 요소 개수로, 텐서의 구조를 설명해준다.

텐서를 출력할 때 나오는 dtype은 해당 텐서에 담긴 요소들의 자료형이다.
string, float, int 등이 올 수 있다.

이 텐서를 이용해 다양한 연산을 수행할 수 있다.

일반적으로 42가 나올 것으로 생각할 수 있지만 다음과 같이 텐서의 형태를 출력한다.
그 이유는 텐서플로 프로그램의 구조가 다음의 두 가지로 분리되어 있기 때문이다.
1. 그래프 생성
2. 그래프 실행

그래프는 간단하게 말해 텐서들의 연산 모음이라고 생각하면 된다. 텐서플로는 텐서와 텐서의 연산들을 먼저 정의하여 그래프를 만들고,이후 필요할 때 연산을 실행하는 코드를 넣어 '원하는 시점'에 실제 연산을 수행하도록 한다. 이러한 방식을 자연실행이라고 하며 함수형 프로그래밍에서 많이 사용한다.

그래프의 실행은 session 안에서 이뤄져야 하며, 다음과 같이 session 객체와 run 메서드를 사용하면 된다. > 현재는 session 모듈이 사라짐

텐서플로로 프로그래밍할 때 알아야 할 가장 중요한 개념 두 개가 있다면 바로 플레이스홀더와 변수이다.

플레이스홀더는 그래프에 사용할 입력값을 나중에 받기 위해 사용하는 매개변수
변수는 그래프를 최적화하는 용도로 텐서플로가 학습한 결과를 갱신하기 위해 사용함
이 변수의 값들이 바로 신경망의 성능을 좌우한다.

그러나 플레이스홀더도 업데이트되면서 사용할 수 없게 되었다.

텐서플로로 딥러닝을 할 때 알아두면 좋은 것
행렬곱의 정의
행렬곱 AXB에 대하여, 행렬 A의 열 수와 행렬 B의 행 수는 같아야 함
행렬곱 AXB를 계싼한 행렬 AB의 크기는 A의 행 개수와 B의 열 개수가 된다.

이 정의에 따라, 앞서 X에 넣을 데이터를 [2,3]형태의 행렬로 정의하였으므로, 행렬곱을 하기 위해서 W의 형태를 [3,2]로 정의한 것이다. ([2,3]행렬은 2가 행의 개수, 3이 열의 개수)

ㅠㅠ 2017년 책을 보면서 공부했더니 업데이트 되면서 바뀐 모듈이 많아서 에러가 자꾸 뜬다
참고//https://eclipse360.tistory.com/40
https://blog.naver.com/mj93m/221890844723

선형회귀모델 구현하기

선형회귀란 간단하게 말해, 주어진 x와 y 값을 가지고 서로 간의 관계를 파악하는 것이다.
이 관계를 알고 나면 새로운 x 값이 주어졌을 때 y 값을 쉽게 알 수 있다.
어떤 입력에 대한 출력을 예측하는 것, 이것이 머신러닝의 기본이다.

텐서플로의 최적화 함수를 이용해 X와 Y의 상관관계를 분석하는 기초적인 선형회귀모델을 만들고 실행해보자.

profile
데이터 분석 공부

0개의 댓글