[TensorFlow] 텐서플로우 2.0 소개
Udemy에 TensorFlow 유료강의를 기반으로 공부해본 내용을 정리한 글이다.
텐서플로우 1.0 에서 2.0으로 넘어오면서 큰 차이는 상수와 변수에 대한 차이가 있다.
1. 상수,변수 값의 정의
텐서플로우 1.0에서는
tensor = tf.constant([[23,4], [32,51])
이런식으로 텐서플로우에서 가져온 constant 함수를 사용한다.
일반적으로 텐서라는 명을 사용한다.
대괄호가 두 개로 2열2행의 2차원 텐서로 정의된다.
tf.constant를 정의한 뒤 불러와보면
tessor
#<tf.Tensor 'Const:0' shape=(2,2) dtype=int32>
이런식으로 값이 아니라 형태만 확인 할 수 있다.
텐서플로우 1.0에서는 값을 가져올때 eval() 함수를 사용하는데, 상수나 변수 값에 접근하고싶으면 그 전에 먼저 세션을 초기화 등록해야하는 절차가 필요하다.
세션을 초기화 하지 않고 값을 불러오는 eval() 사용 시 No default session is registered 라는 에러가 발생한다.
->
텐서플로우 2.0으로 넘어가면서 상수나 변수 값을 가져오는 방법이 훨씬 더 간단해졌는데,
#상수 값 정의
tensor_20 = tf.constant([[23,4] , [32,5]])
tensor
#그냥 tensor 로만 적어도 아래처럼 값 까지 나옴
#<tf.Tensor:id=0, shape=(2,2) dtype=int32, numpy=
# array([[23,4], [32,5]], dtype=int32)>
형태만 출력하려면 tenfor_20.shape 출력, 값만 가져오려면 tensor_20.numpy()로 출력 하면 된다.
상수는 값을 바꿀 수 없기 때문에 변수에서만 사용하는 툴
#변수 정의
tf2_variable = tf.Variable([[1., 2., 3.] , [4., 5., 6.]])
tf2_variable
#assign : variable 클래스에서 사용할 수 있는 함수로, 변수 내 값을 바꾸고자 할 때 사용
tf2_variable[0,2].assign(100)
2. Tensorflow2.0 유용 툴
np.square(tensor) : 셀의 제곱 구하기
np.sqrt(tensor) : 셀의 제곱근 구하기
np.dot(tensor, tensor_20) : 두 행렬 곱 연산
+행렬곱 짚고가기
:앞의 행렬의 행과 뒤의 행렬의 열을 연산, "앞 행렬의 행의 성분 개수" 와 "뒤 행렬의 열의 성분 개수"가 같아야함
3. Tensorflow 문자열
tf_string = tf.constant("TensorFlow")
tf.strings.length(tf_string) #스트링 길이 확인
tf.strings.unicode_decode(tf_string , "UTF8") #다른형식으로 해독하는 디코딩 연산, 자연어처리에서 많이 이용