:: ai 14

tensorflow :: 텐서플로우 ConfigProto (v1 -> v2 코드 업그레이드 8)

ConfigProto 텐서플로우에서 configproto 는 연산 방식을 설정하는 기능의 함수다. tf.session 으로 생성한 세션 내에서 연산을 진행할 때 cpu 를 사용할 것인지, 아니면 gpu 를 사용할 것인지 결정할 수 있다. config = tf.ConfigProto() # AttributeError: module 'tensorflow' has no attribute 'ConfigProto' 위와 같이 호출하며, 이 때 몇몇 인자값들을 지정하면 연산 방식을 설정할 수 있다. 그런데 v2.0 환경에서 ConfigProto 를 사용할 경우 위 주석 내용과 같이 에러가 발생한다. tensorflow v2.0 부터는 더 이상 ConfigProto 를 제공하지 않기 때문이다. 1. tf.config...

:: ai/tensorflow 2022.06.14

tensorflow :: 텐서플로우 Saver (v1 -> v2 코드 업그레이드 7)

Saver 텐서플로우의 Saver 모듈은 모델과 파라미터를 저장하고 불러오는 기능을 제공한다. 모델을 학습시키고 나면 학습된 모델을 토대로 기능을 수행해야하므로 저장이 필요하다. 그리고 보통 머신러닝 학습을 진행하면 시간이 오래 소요되는데, Saver 의 save 함수를 이용하면 학습 중간중간 특정 시점마다 모델 저장 또한 가능하다. (학습 시간이 마냥 길어진다고 모델의 성능이 좋아지는 것은 아니기에 이렇게 중간 저장해둔 모델이 유용하게 쓰일 수 있다.) 모델이 저장되면 checkpoint 파일들과 meta graph 파일(.meta 확장자) 이 남게 되는데 checkpoint 파일에는 weights, biases, grandients 등의 정보가 저장되며 meta graph 파일에는 말 그대로 모델 학..

:: ai/tensorflow 2022.06.07

DL :: 인공지능, 머신러닝, 딥러닝 뭐가 다른거죠? (feat. 생각하는 기계?)

* 'Deep Learning with Python' 도서를 참고하여 작성한 내용입니다. 인공지능(AI) 이라는 말은 이제 너무 흔한 단어가 돼버렸다^.^; IT 업계 종사자가 아니더라도 인공지능, 머신러닝, 딥러닝이라는 단어를 들어보지 못한 사람은 아마 없을 것이다. 최근 몇 년간 인공지능 분야가 무서운 속도로 발전하면서 오래 전에는 영화에서나 가능한 줄 알았던 것들이 현실로 다가오고 있고, 심지어는 이미 어느 정도 보급화되고있다. 대표적으로 지능형 챗봇, 자율주행 자동차, 가상 비서 같은 것들 말이다. (테슬라사고싶다) 이제는 어느 정도 상식의 영역으로 들어온 만큼 인공지능의 기본적은 개념은 알아두는 게 좋을 것 같다 :) 1. 인공지능, 머신러닝, 딥러닝: 뭐가 다른거죠? AI 에 대해 알고 싶다면..

:: ai 2022.04.21

tensorflow :: 텐서플로우 Optimizer 개념 및 코드 업그레이드 (v1 -> v2 코드 업그레이드 6)

Optimizer 머신러닝 모델 학습에서 optimizer 는 꼭 필요한 개념이다. 기계는 주어진 연산에 따라 데이터를 학습시키면서 매 단계마다 손실값(loss)을 계산한다. 그리고 이 손실값을 줄여나가기 위해 변수(variable)들을 약간씩 조정하면서 다시 학습을 진행해 나간다. 손실값이 커진다는 것은 쉽게 말하자면 '주어진 학습데이터에 잘 맞지 않는 모델을 만들어가고 있다'는 건데, 그래서 기계가 중간중간 손실값을 체크하면서 이를 줄여나갈 수 있는 방향으로 최적화(optimization)를 진행하는 것이다. 이 최적화(optimization)를 진행하는 것이 옵티마이저(Optimizer) 이고 손실 함수를 통해 얻은 손실값으로부터 모델을 업데이트하는 방식을 의미한다. 옵티마이저의 종류는 다양한데 (..

:: ai/tensorflow 2022.04.17

tensorflow :: 텐서플로우 losses 의 regularization loss (v1 -> v2 코드 업그레이드 5)

losses 머신러닝 모델링에서 손실함수의 정의와 loss 값 연산은 필수적이다. 기존 tensorflow v1.x 으로 모델을 구축해보았던 개발자라면 keras.losses 모듈 내 함수들을 사용해봤을 것이다. 그 중 아래의 'get_regularization_loss' 는 총 regularization loss 값을 계산하는 기능을 한다. 그러나 v2.x 버전으로 업그레이드 한 후에 해당 코드는 다음과 같이 에러가 발생한다. tf.losses.get_regularization_loss() # AttributeError: module 'tensorflow.keras.losses' has no attribute 'get_regularization_loss' 이는 텐서플로우 v2.0 에서 더 이상 기존 방..

:: ai/tensorflow 2022.04.12

tensorflow :: 텐서플로우 layers (v1 -> v2 코드 업그레이드 4)

layers 텐서플로우 1.x 버전으로 개발된 코드라면 layers 모듈을 사용했을 확률이 매우 높다. 모델링을 위해 필요한 기본적인 layer 를 정의하는 데 사용되기 때문이다. 그러나 2.x 버전 환경에서 실행시키면 다음과 같이 에러가 난다. tf.layers.dense() tf.layers.dropout() # AttributeError: module 'tensorflow' has no attribute 'layers' 이는 텐서플로우 v2.0 에서 더 이상 layers 모듈을 지원하지 않기 때문이다. 1. tf.keras 사용 v2.0 에서는 tf.keras 를 사용하여 layer 를 정의할 수 있다. tf.keras.layers 의 Dense 를 사용해서 다음과 같은 방법으로 정의할 수 있다. ..

:: ai/tensorflow 2022.03.31

tensorflow :: 텐서플로우 contrib (v1 -> v2 코드 업그레이드 3)

contrib tensorflow 2.x 버전에서 다음과 같이 contrib 모듈을 사용하면 실행 시 에러가 난다. import tensorflow as tf r1 = tf.contrib.layers.l1_regularizer(0.04) r2 = tf.contrib.layers.l2_regularizer(0.04) # AttributeError: module 'tensorflow' has no attribute 'contrib' 이는 tf.contrib 모듈이 텐서플로 v2.0 에서 사라졌기 때문이다. 대부분의 v1.0 함수들은 compat 모듈을 사용하여 v2.0 에서도 그대로 사용할 수 있다. import tensorflow.compat.v1 as tf tf.disable_v2_behavior() 코..

:: ai/tensorflow 2022.03.30

tensorflow :: 텐서플로우 session, placeholder (v1 -> v2 코드 업그레이드 2)

session tensorflow 에서 session 이란, 정의한 노드 및 연산 그래프를 실행할 수 있는 환경을 제공해주는 클래스이다. 연산을 실행하기 위한 리소스를 할당하고 중간 결과 및 변수값을 저장하는 역할을 한다. 세션은 보통 다음과 같은 순서로 활용된다. 1) 연산 그래프를 정의한다. 2) 이 그래프를 실행할 세션을 정의한다. 3) 세션을 실행한다. (tf.Session.run) 4) 세션을 종료한다. (tf.Session.close) tensorflow v2.0 으로 넘어가면서 이 Session 의 개념이 사라졌다. 아마 버전이 바뀌면서 가장 큰 변화 중 하나가 이 부분일 것이다. (* 이전 포스팅 참고: https://toramko.tistory.com/entry/tensorflow-%ED..

:: ai/tensorflow 2022.03.07

tensorflow :: 텐서플로우 set_random_seed (v1 -> v2 코드 업그레이드 1)

set_random_seed tensorflow 에서 variable 객체를 생성할 때 보통 초기값을 랜덤하게 지정하는데, 이 때 random seed 를 주면 항상 같은 랜덤값이 지정된다. 그리고 이 경우 사용하는 함수가 set_random_seed 이다. (v1.0) v2.0 으로 넘어오면서 set_random_seed 함수를 사용할 경우 에러가 발생한다. import tensorflow as tf tf.set_random_seed(0) # AttributeError: module 'tensorflow' has no attribute 'set_random_seed' 1. v2.0 의 random.set_seed 활용 v2.0 에서는 다음과 같이 변환하여 사용하면 된다. tf.random.set_see..

:: ai/tensorflow 2022.02.28

tensorflow :: 텐서플로우 v1(1.x), v2(2.x) 차이 및 버전 업그레이드

* https://www.springboard.com/blog/ai-machine-learning/tensorflow-1-0-vs-tensorflow-2-0/ 위 사이트를 참고하여 작성한 내용입니다. :) 1.x 버전의 텐서플로우를 사용해왔던 개발자라면 한 번쯤은 2.x 버전으로의 업그레이드를 고려해보았을 것이다. 그치만 변경된 사항이 많다고 해서 차마 쿨하게 업그레이드 하긴 어려운 일..! 그래서 버전1과 버전2는 어떤 차이가 있는지 정리해 보았다. 1. Tensorflow 텐서플로우는 머신러닝 관련 툴, 라이브러리, 여러 커뮤니티 리소스들을 담은 오픈소스 플랫폼이다. 2. Tensorflow 2.0 으로 가면서 어떤 점이 달라졌을까? tensorflow 2.0 은 보다 쉬운 사용성을 최대 강점으로 내..

:: ai/tensorflow 2022.02.25
300x250