假设,以下是数据集中用于解决回归问题的前几行:
H 7.042 5.781 5.399 -9.118 5.488 7.470 0 0 0 1 0 1 1 3 0 0 0 1 0 0 0 0 0 0 0 0 2.144
H 5.781 5.399 5.373 5.488 5.166 6.452 0 1 1 3 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 2.268
H 5.399 5.373 5.423 5.166 4.852 6.069 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.101
H 5.373 5.423 5.247 4.852 5.164 6.197 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.222
H 5.423 5.247 5.485 5.164 4.943 6.434 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.416
C 5.247 5.485 6.675 4.943 8.103 8.264 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3.028
C 5.485 6.675 6.372 8.103 -9.152 9.047 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1.235
C 6.675 6.372 5.669 -9.152 -8.536 11.954 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -0.953
H 6.372 5.669 5.304 -8.536 5.433 6.703 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.233
H 5.669 5.304 5.461 5.433 4.924 6.407 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2.313
最左边的列是类数据。最右边的列是 Y 数据。其余的特征都是角度数据。
.
我对该模型的初始设置如下:
def create_model(n_hidden_1, n_hidden_2, num_features):
# create the model
model = Sequential()
model.add(tf.keras.layers.InputLayer(input_shape=(num_features,)))
model.add(tf.keras.layers.Dense(n_hidden_1, activation='relu'))
model.add(tf.keras.layers.Dense(n_hidden_2, activation='relu'))
model.add(tf.keras.layers.Dense(1))
# instantiate the optimizer
opt = keras.optimizers.Adam(learning_rate=LEARNING_RATE)
# compile the model
model.compile(
loss="mean_squared_error",
optimizer=opt,
metrics=["mean_squared_error"]
)
# return model
return model
这个模型没有产生正确的结果。预期的输出应该在左右。但是,当前的设置产生了大约。这些是弧度值。
有人告诉我,MSE 在角度数据的情况下不起作用。所以,我需要使用自定义输出层和自定义错误函数。
为什么在角度数据的情况下均方误差不起作用?
我该如何解决这个问题?