I have a model on TensorFlow that has 2 inputs: some text data and a set of 3 numerical values. It outputs only one single float value. Here is its structure.
num_input = keras.Input(shape= (30,3), name="nums")
nmlstm = layers.LSTM(128, return_sequences=True)(num_input)
nmdense1 = layers.Dense(128, activation='relu')(nmlstm)
nmdense2 = layers.Dense(128, activation='relu')(nmdense1)
nmdense3 = layers.Dense(128, activation='relu')(nmdense2)
text_input = keras.Input(shape= (30, max_sequence_length), name="text")
text_vec = layers.Embedding(vocab_size, mask_zero=True, output_dim=embedding_dim)(text_input)
txtds1 = keras.layers.TimeDistributed(layers.LSTM(64, return_sequences=True))(text_vec)
txtds2 = keras.layers.TimeDistributed(layers.LSTM(64, return_sequences=True))(txtds1)
txtds3 = keras.layers.TimeDistributed(layers.LSTM(64, return_sequences=True))(txtds2)
txrspd = layers.Reshape((30, 128))(txtds3)
txdense = layers.Dense(128, activation='relu')(txrspd)
concat = layers.concatenate([nmdense3, txdense])
prcs1 = layers.Dense(128, activation='relu')(concat)
prcs2 = layers.Dense(128, activation='relu')(prcs1)
pooling = layers.GlobalAveragePooling1D()(prcs2)
last = layers.Dense(1, name='prediction')(pooling)
I tried different loss functions for the model and got different results, which vary largely.
So, these are the results:
MeanSquaredError
loss: 0.038
MeanAbsoluteError
loss: 0.108
Huber
loss: 0.0185
Does using Huber over Mean Squared Error loss function mean that the model will perform different? What will change in the training process if switch the loss function? (I assume something is because of the huge differences) Also, if "loss" is the difference between input and output values, what does loss even mean when there are strings and multiple floats as input and a single float output?
source https://stackoverflow.com/questions/77397729/huge-differences-between-loss-functions
Comments
Post a Comment