title: How to fix "ResourceExhaustedError: OOM when allocating tensor"
body: <p>I wanna make a model with multiple inputs. So, I try to build a model like this.</p>
  <pre><code># define two sets of inputs
  inputA = Input(shape=(32,64,1))
  inputB = Input(shape=(32,1024))
   
  # CNN
  x = layers.Conv2D(32, kernel_size = (3, 3), activation = 'relu')(inputA)
  x = layers.Conv2D(32, (3,3), activation='relu')(x)
  x = layers.MaxPooling2D(pool_size=(2,2))(x)
  x = layers.Dropout(0.2)(x)
  x = layers.Flatten()(x)
  x = layers.Dense(500, activation = 'relu')(x)
  x = layers.Dropout(0.5)(x)
  x = layers.Dense(500, activation='relu')(x)
  x = Model(inputs=inputA, outputs=x)
   
  # DNN
  y = layers.Flatten()(inputB)
  y = Dense(64, activation=&quot;relu&quot;)(y)
  y = Dense(250, activation=&quot;relu&quot;)(y)
  y = Dense(500, activation=&quot;relu&quot;)(y)
  y = Model(inputs=inputB, outputs=y)
   
  # Combine the output of the two models
  combined = concatenate([x.output, y.output])
   
  
  # combined outputs
  z = Dense(300, activation=&quot;relu&quot;)(combined)
  z = Dense(100, activation=&quot;relu&quot;)(combined)
  z = Dense(1, activation=&quot;softmax&quot;)(combined)
  
  model = Model(inputs=[x.input, y.input], outputs=z)
  
  model.summary()
  
  opt = Adam(lr=1e-3, decay=1e-3 / 200)
  model.compile(loss = 'sparse_categorical_crossentropy', optimizer = opt,
      metrics = ['accuracy'])
  </code></pre>
  <p>and the summary
  :
  _</p>
  <p>But, when i try to train this model,</p>
  <pre><code>history = model.fit([trainimage, train_product_embd],train_label,
      validation_data=([validimage,valid_product_embd],valid_label), epochs=10, 
      steps_per_epoch=100, validation_steps=10)
  </code></pre>
  <p>the problem happens....
  :</p>
  <pre><code> ResourceExhaustedError                    Traceback (most recent call
   last) &lt;ipython-input-18-2b79f16d63c0&gt; in &lt;module&gt;()
   ----&gt; 1 history = model.fit([trainimage, train_product_embd],train_label,
   validation_data=([validimage,valid_product_embd],valid_label),
   epochs=10, steps_per_epoch=100, validation_steps=10)
  
   4 frames
   /usr/local/lib/python3.6/dist-packages/tensorflow_core/python/client/session.py
   in __call__(self, *args, **kwargs)    1470         ret =
   tf_session.TF_SessionRunCallable(self._session._session,    1471      
   self._handle, args,
   -&gt; 1472                                                run_metadata_ptr)    1473         if run_metadata:    1474          
   proto_data = tf_session.TF_GetBuffer(run_metadata_ptr)
   
   ResourceExhaustedError: 2 root error(s) found.   (0) Resource
   exhausted: OOM when allocating tensor with shape[800000,32,30,62] and
   type float on /job:localhost/replica:0/task:0/device:GPU:0 by
   allocator GPU_0_bfc     [[{{node conv2d_1/convolution}}]] Hint: If you
   want to see a list of allocated tensors when OOM happens, add
   report_tensor_allocations_upon_oom to RunOptions for current
   allocation info.
   
       [[metrics/acc/Mean_1/_185]] Hint: If you want to see a list of
   allocated tensors when OOM happens, add
   report_tensor_allocations_upon_oom to RunOptions for current
   allocation info.
   
     (1) Resource exhausted: OOM when allocating tensor with
   shape[800000,32,30,62] and type float on
   /job:localhost/replica:0/task:0/device:GPU:0 by allocator GPU_0_bfc    
   [[{{node conv2d_1/convolution}}]] Hint: If you want to see a list of
   allocated tensors when OOM happens, add
   report_tensor_allocations_upon_oom to RunOptions for current
   allocation info.
   
   0 successful operations. 0 derived errors ignored.
  </code></pre>
  <p>Thanks for reading and hopefully helping me :)</p>