我正在构建一个模型,以执行方程y=mx+c
的线性回归。我生成了一个包含1999个样本的csv文件和一个可以更改归一化的模型(开/关)、层数、节点数和纪元数。我希望能够使用loss /在我事先不知道答案但对我的结果感到困惑的情况下,指导选择这些变量的训练和评估的准确性,总结如下:
Normalization Layers Nodes Epochs Start Loss End Loss Accuracy
TRUE 1 200 5 0.6022 0.4348 0
TRUE 1 200 50 0.5963 0.4347 0
TRUE 10 200 5 0.5249 0.4525 0
TRUE 10 200 50 0.5157 0.4418 0
TRUE 10 500 5 0.5816 0.4825 0
TRUE 10 500 50 0.5591 0.4422 0
FALSE 1 200 5 996.2897 1.8313 0
FALSE 1 200 50 1063.1994 1.7264 0
FALSE 10 200 5 421.1371 40.6160 0
FALSE 10 200 50 293.6943 46.2854 0
FALSE 10 500 5 382.2659 297.2881 0
FALSE 10 500 50 412.2182 79.7649 0
字符串
我使用的编译参数是compile optimizer:adam loss:mean_absolute_error metrics:['accuracy'] loss_weights:[1.0]
个
一个示例模型概要被
Model: "LRmodel"
_________________________________________________________________
Layer (type) Output Shape Param #
LR-input (InputLayer) [(None, 1)] 0
_________________________________________________________________
dense (Dense) (None, 200) 400
_________________________________________________________________
ML-LinearRegression (Dense) (None, 1) 201
Total params: 601
Trainable params: 601
Non-trainable params: 0
型
拟合结果示例为
1600/1600 - 1s - loss: 1063.1994 - accuracy: 0.0000e+00 - val_loss: 90.2848 - val_accuracy: 0.0000e+00
Epoch 2/5
1600/1600 - 0s - loss: 137.8654 - accuracy: 0.0000e+00 - val_loss: 2.1525 - val_accuracy: 0.0000e+00
Epoch 3/5
1600/1600 - 0s - loss: 4.4340 - accuracy: 0.0000e+00 - val_loss: 3.4557 - val_accuracy: 0.0000e+00
Epoch 4/5
1600/1600 - 0s - loss: 1.7573 - accuracy: 0.0000e+00 - val_loss: 3.1190 - val_accuracy: 0.0000e+00
Epoch 5/5
1600/1600 - 0s - loss: 1.7264 - accuracy: 0.0000e+00 - val_loss: 3.2794 - val_accuracy: 0.0000e+00
型
此外,还有2个问题我不理解
1.有时候,拟合的损失很大,而且永远不会改变,模型无法计算结果。当这种情况发生时,我再次运行训练(有时是几次),最终得到上面描述的结果,而数据或代码没有变化。
1.规格化生成的模型比不规格化时的模型精度低。
1条答案
按热度按时间az31mfrm1#
您不会显示模型。但是,如果您正在进行线性回归,则不应使用准确度作为度量。当您进行分类时,例如尝试分类图像是狗还是猫时,会使用准确度。您应该在model.compile中使用适合线性回归的损失函数,如
tf.keras.losses.MeanSquaredError
。回归损失的文档为here.回归度量的文档为here.的