When will you grow up?

fit_generator with multiple inputs 본문

02. Study/Keras

fit_generator with multiple inputs

미카이 2018. 3. 22. 02:00

Keras를 사용할때 어떠한 모델을 커스텀해서 사용 할 경우가 있다.


예를들어, input을 두개의 종류를 받고 따로따로 학습시켜서 합치거나 더하는 경우도 있을꺼고....


자신만의 모델을 만드는건 차후 블로그 포스팅을 할예정..


그런데 input을 두개 넣어야 될 경우가 있다.



위 그림과 같은 모델을 설계 하였을 경우,

input이 2개가 되는데, 그냥 넣으면 되겠지 하고 넣었다가



[Error]

Error when checking model input: the list of Numpy arrays that you are passing to your model is not the size the model expected. Expected to see 2 array(s), but instead got the following list of 1 arrays: [array([[[[0.75686276, 0.75686276, 0.75686276], [0.75686276, 0.75686276, 0.75686276], [0.75686276, 0.75686276, 0.75686276], ..., [0.65882355, 0.65882355, 0.65882355...


이러한 오류를 발견하게 될 수 있다.


오류가 나는 코드는 생략하겠다.


간단하게 input의 형태를 바꿔 맞춰주면 된다!

%이것때매 몇시간 삽질을 했다....ㅠㅠㅠ


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
"""
모델 설계 제외
"""
 
seed=1
 
generator = ImageDataGenerator(rotation_range=15,
                                   width_shift_range=0.2,
                                   height_shift_range=0.2,
                                   shear_range=0.2,
                                   zoom_range=0.2,
                                   horizontal_flip=True,
                                   fill_mode='nearest')
 
def generator_two_img(X1, X2, Y,batch_size):
    
 
    genX1 = generator.flow(X1, Y, batch_size=batch_size, seed=seed)
    genX2 = generator.flow(X2, Y, batch_size=batch_size, seed=seed)
 
    while True:
        X1 = genX1.next()
        X2 = genX2.next()
        yield [X1[0], X2[0]], X1[1]
  """
      .................................
  """
hist = model.fit_generator(generator_two_img(x_train, x_train_2, y_train, batch_size),
                steps_per_epoch=len(x_train) // batch_size, epochs=nb_epoch,
                callbacks = callbacks,
                validation_data=generator_two_img(x_val, x_val_2, y_val, batch_size),
                validation_steps=x_validation.shape[0// batch_size, 
                verbose=1)
 
 
 
#hist = model.fit([x_train, x_train_2], y_train, batch_size = batch_size, epochs = 100)
 
cs


reference : https://stackoverflow.com/questions/49404993/keras-how-to-use-fit-generator-with-multiple-inputs

'02. Study > Keras' 카테고리의 다른 글

keras model 저장 및 callback  (0) 2019.08.07
model name exchange  (0) 2018.03.22
Keras Visualization  (0) 2018.03.17
Keras Update(Window10 Conda)  (0) 2018.03.14
VGG+ResNet(Fashion_MNIST)  (0) 2017.12.10
Comments