I am trying to impement LSTM on edge impulse Expert mode and the code is as below
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, LSTM,RepeatVector
from tensorflow.keras.callbacks import EarlyStopping
from tensorflow.keras.optimizers import Adamreshape input to be [samples, time steps, features]
X_train=tf.reshape(X_train, (X_train.shape[0], 1, X_train.shape[1]))
X_test=tf.reshape(X_test, (X_test.shape[0], 1, X_test.shape[1]))
repeat_vector_units =X_train.shape[0]
output_units = X_train.shape[1]
#train_dataset = tf.data.Dataset.from_tensor_slices((X_train, Y_train))model architecture
model = Sequential()
model.add(LSTM(50, activation=‘relu’,input_shape=(X_train.shape[1], X_train.shape[2])))
model.add(RepeatVector(repeat_vector_units))
#model.add(LSTM(50, activation=‘relu’))
model.add(TimeDistributed(Dense(output_units)))
#model.add(Dense(classes, name=‘y_pred’))this controls the learning rate
opt = Adam(lr=0.005, 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 = 70
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=‘mean_squared_error’, optimizer=opt)
model.fit(X_train,Y_train, epochs=5, validation_data=(X_test, Y_test), verbose=2, callbacks=callbacks)
but i get this error shown below. i reduced the epochs to get a quick output.
59/59 - 3s - loss: 26.9613 - val_loss: 20.5063
Epoch 4/5
59/59 - 3s - loss: 21.9133 - val_loss: 16.6791
Epoch 5/5
59/59 - 3s - loss: 17.1886 - val_loss: 12.5210
Finished trainingSaving best performing model…
Still saving model…
Traceback (most recent call last):
File “/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py”, line 759, in set_shape
unknown_shape)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Shapes must be equal rank, but are 3 and 2During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File “/home/train.py”, line 272, in
main_function()
File “/home/train.py”, line 180, in main_function
concrete_func = ei_tensorflow.conversion.get_concrete_function(tf_saved_model, cf_input_shape)
File “./resources/libraries/ei_tensorflow/conversion.py”, line 8, in get_concrete_function
concrete_func.inputs[0].set_shape(input_shape_with_batch)
File “/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py”, line 762, in set_shape
raise ValueError(str(e))
ValueError: Shapes must be equal rank, but are 3 and 2Application exited with code 1 (Error)
Job failed (see above)
When i edit as a notebook i get a model but i need it to work for edge impulse do that i can get a library compatible with arduino. can you help me understand why it works on the python notebook on google colabs and not on the edge impulse platform