Hi, I am fairly new to TensorFlow and trying to figure out a few things.
For Q1, I have a matrix of dimensions 46 and 5, representing 5 feature vectors. I have defined two models: the first one is the basic neural network structure, and the second one uses a convolutional layer. I don’t have a very good understanding of the input layer and size. So, I need some feedback to confirm if the code is correct.
X_train = np.random.rand(44, 5)
y_train = np.random.rand(44, 1)
X_rem = np.random.rand(11, 5)
X_train= np.asarray(X_train).astype(np.float32)
X_rem= np.asarray(X_rem).astype(np.float32)
y_train= np.asarray(y_train).astype(np.float32)
train_dataset = tf.data.Dataset.from_tensor_slices((X_train, y_train))
BATCH_SIZE = 44
train_dataset = train_dataset.batch(BATCH_SIZE)
test_dataset = test_dataset.batch(BATCH_SIZE)
model1 = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(5,)),
tf.keras.layers.Dense(10, activation=‘relu’),
#tf.keras.layers.Dense(5, activation=‘relu’),
tf.keras.layers.Dense(1)
])
model2 = tf.keras.Sequential([
tf.keras.layers.Input(shape=(5,)),
tf.keras.layers.Reshape((5, 1)),
tf.keras.layers.Conv1D(1, kernel_size=1, activation=‘relu’),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(12, activation=‘linear’),
tf.keras.layers.Dense(1)
])
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=0.2),
loss=‘mean_absolute_error’,
metrics=[‘mean_absolute_error’])
Q2: If the code is correct, I have a matrix of dimensions (44, 5). Then, why is the input shape specified as (5,)? I understand that the model expects the input shape in the format (Batch size, height, width). However, I haven’t reshaped them before.
Q3: When using model1
, I am obtaining different results (model.predict(X_rem)
) for model.fit(X_train, y_train, epochs=100)
and model.fit(train_dataset, epochs=100)
. The output I get from model.fit(train_dataset, epochs=100)
is a single value for all predictions."
Q4: If I using model2, I am getting a single value for all the predictions.