Hi, I’m trying to train a image classification model generated by EON tuner. The model input image size is 96x96x3.
When viewed the model in keras expert mode:
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, InputLayer, Dropout, Conv1D, Conv2D, Flatten, Reshape, MaxPooling1D, MaxPooling2D, BatchNormalization, TimeDistributed
from tensorflow.keras.optimizers import Adam
# model architecture
model = Sequential()
channels = 3
columns = 96
rows = int(input_length / (columns * channels))
model.add(Reshape((rows, columns, channels), input_shape=(input_length, )))
model.add(Conv2D(16, kernel_size=3, activation='relu', kernel_constraint=tf.keras.constraints.MaxNorm(1), padding='same'))
model.add(MaxPooling2D(pool_size=2, strides=2, padding='same'))
model.add(Conv2D(32, kernel_size=3, activation='relu', kernel_constraint=tf.keras.constraints.MaxNorm(1), padding='same'))
model.add(MaxPooling2D(pool_size=2, strides=2, padding='same'))
model.add(Conv2D(64, kernel_size=3, activation='relu', kernel_constraint=tf.keras.constraints.MaxNorm(1), padding='same'))
model.add(MaxPooling2D(pool_size=2, strides=2, padding='same'))
model.add(Flatten())
model.add(Dropout(0.25))
model.add(Dense(classes, activation='softmax', name='y_pred'))
# this controls the learning rate
opt = Adam(lr=0.0005, beta_1=0.9, beta_2=0.999)
# this controls the batch size, or you can manipulate the tf.data.Dataset objects yourself
BATCH_SIZE = 32
train_dataset = train_dataset.batch(BATCH_SIZE, drop_remainder=False)
validation_dataset = validation_dataset.batch(BATCH_SIZE, drop_remainder=False)
callbacks.append(BatchLoggerCallback(BATCH_SIZE, train_sample_count))
# train the neural network
model.compile(loss='categorical_crossentropy', optimizer=opt, metrics=['accuracy'])
model.fit(train_dataset, epochs=10, validation_data=validation_dataset, verbose=2, callbacks=callbacks)
With this model, im facing the following error:
Traceback (most recent call last):
File “/home/train.py”, line 283, in
main_function()
File “/home/train.py”, line 152, in main_function
model, override_mode = train_model(train_dataset, validation_dataset, MODEL_INPUT_LENGTH, callbacks,
File “/home/train.py”, line 72, in train_model
model.add(Reshape((rows, columns, channels), input_shape=(input_length, )))
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/training/tracking/base.py”, line 517, in _method_wrapper
result = method(self, *args, **kwargs)
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/engine/sequential.py”, line 208, in add
layer(x)
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/engine/base_layer.py”, line 951, in call
return self._functional_construction_call(inputs, args, kwargs,
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/engine/base_layer.py”, line 1090, in _functional_construction_call
outputs = self._keras_tensor_symbolic_call(
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/engine/base_layer.py”, line 822, in _keras_tensor_symbolic_call
return self._infer_output_signature(inputs, args, kwargs, input_masks)
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/engine/base_layer.py”, line 863, in _infer_output_signature
outputs = call_fn(inputs, *args, **kwargs)
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/layers/core.py”, line 557, in call
result.set_shape(self.compute_output_shape(inputs.shape))
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/layers/core.py”, line 547, in compute_output_shape
output_shape += self._fix_unknown_dimension(input_shape[1:],
File “/usr/local/lib/python3.8/dist-packages/tensorflow/python/keras/layers/core.py”, line 536, in _fix_unknown_dimension
raise ValueError(msg)
ValueError: total size of new array must be unchanged, input_shape = [96], output_shape = [0, 96, 3]
Application exited with code 1 (Error)
Job failed (see above)
Can anyone please help me solve this issue?
Thanks and Regards,
Ramson Jehu K