akaSonny
[TF/Keras] Custom Datagenerator로 Multiple Input 넣기 본문
Study (Programming)/Tensorflow-Keras
[TF/Keras] Custom Datagenerator로 Multiple Input 넣기
Jihyeoning 2024. 4. 11. 14:35Custom Datagenerator로 Multiple Input 넣기
오늘 깨달은점 generator로 multi input을 사용해본 적이 없었다 ..그냥 데이터를 직접 넣을 때는 model.fit(x=[x1, x2], y=y)
이런 식으로 사용하면 됐는데 generator는 어떻게 하지 ???? 에서 뇌정지
찾아보니 대부분 custom이 아닌 ImageGenerator 관련 방법이라 찾는데 애 좀 먹었다.
1. 모델 만들기
일단 다음과 같이 2개의 입력값을 가지는 모델을 생각해보자.
input1 = tf.kears.layers.Input(shape=(64, 64))
input2 = tf.kears.layers.Input(shape=(64, 64))
def network(inputs):
x = Dense(24, activation='relu')(inputs)
x = Dense(24, activation='relu')(x)
return x
network1 = network(input1)
network2 = network(input2)
x = concatenate([network1, network2])
out = Dense(1)(x)
model = tf.keras.models.Model([input1, input2], out)
2. Custom Datagenerator
* 일단 기본적인 custom datagenerator 만드는 방법 !
2023.01.12 - [Study (Programming)/Tensorflow-Keras] - Keras Custom Data Generator 만들기
Keras Custom Data Generator 만들기
- 이미지 데이터를 훈련에서 사용할 때, 이미지를 메모리 공간에 한 번에 올려놓고 사용하면 out of memory 에러가 발생해서,, 찾아보니까 Data Generator를 사용하면 배치마다 이미지를 불러올 수 있었
star-nation-chunsik.tistory.com
이 코드에서 __getitem__(self)
의 return에서 input 부분을 tuple 형태로 바꾸어주면 된다.
class DataGenerator(Sequence):
def __init__(self, *kwargs):
...
def __len__(self):
return ...
def __getitem__(self):
...
return (inp1, inp2), target
3. model.fit()
* generator를 쓰더라도 이제는 fit_generator가 아닌 fit 함수로 모델 훈련이 가능해졌다.
train_gen = DataGenerator(mode='train')
val_gen = DataGenerator(mode='val')
model.fit(trian_gen, validataion_data=val_ge, epochs=100, batch_size=1)
이런 식으로 단일 입력값과 동일하게 써주면 된다
Referene
'Study (Programming) > Tensorflow-Keras' 카테고리의 다른 글
[Tensorflow/keras] callbacks 사용하기 (훈련 중 모델 저장 / EarlyStop) (1) | 2024.02.01 |
---|---|
[Tensorflow/Keras] MNIST 학습시키기 (1) | 2022.10.18 |
[Tensorflow/Keras] Custom loss function 만들기 (0) | 2022.09.30 |