Deep Learning/tensorflow

[Deep Learning]tensorflow로 Dnn 모델 쌓기

heedy 2022. 11. 7. 13:04
728x90

- Import &  환경설정

import tensorflow as tf
from tensorflow.keras import utils

import gc
# 연산방식 설정
# GPU 또는 CPU multi training 가능하게 설정
from tensorflow.compat.v1 import ConfigProto

# Configproto의 session을 default session으로 설정
from tensorflow.compat.vq impofg InteractiveSession

config = ConfigProto()

# gpu memory 0.1씩 할당
config.gpu_option.per_process_gpu_memory_fraction = 0.1
session = InteractiveSession(config = config)

- Model 생성

dnn 가장 기본구조 틀만 넣었습니다. 보통 module화 하여 사용하기 때문에 사용자 함수로 input값 설정 후 여러가지 형태로 실험해보고, 가장성능이 좋은 상태로 만들기 때문에 이 구조를 기본으로 변형할 예정입니다.

# output_bias 값으로 초기값 생성
if output_bias is not None:
	output_bias = tf.keras.initializers.Constant(output_bias)
    
inputs = tf.keras.Input(shape = input_dim,))

# input 진행
x = tf.keras.layers.Dense(32)(inputs)
# batch 정규화
x = tf.keras.layers.BatchNormalization()(x)
# activation function
x = tf.nn.relu(x)

# layer 반복 쌓기
# layer 반복은 여러번 실험으로 다양한 시도를 해봐야 함.
x = tf.keras.layers.Dense(16)
# batch 정규화
x = tf.keras.layers.BatchNormalization()(x)
# Dropout 설정
x = tf.nn.dropout(x, rate = 0.5)
# 활성화 함수
x = tf.nn.relu(x)

output = tf.keras.layers.Dense(label_num, activation = 'softmax', bias_initializer = output_bias)(x)

model = tf.keras.Model(inputs = inputs, outputs = output)

# optimizer 설정
optim = tf.keras.optimizers.Adam(learning_rate = 0.01)

# model compile
model.compile(optimizer = optim, lass = tf.keras.CategoricalCrossentropy(), mertics = 'accuracy')

# model 요약
model.summary
728x90