我是安和ML的新手。我用keras编写了一段简单的代码来训练我的ANN。该神经网络有165个输入和1个多观测输出(回归模型)。我这里的问题是acc和val_acc都是零,这对我来说是没有意义的。我不知道什么是根本原因,我的模型设置或我的数据。另外两个问题是:( 1)如果对该模型进行两次训练,将得到不同的结果;( 2)对于模型评价,我应该使用哪些数据集、训练数据还是测试数据?谢谢!
model = keras_model_sequential()
model %>% layer_dense(units = 10, activation = 'relu', input_shape = 165)
model %>% layer_dense(units = 6, activation = 'relu')
model %>% layer_dense(units = 1)
summary(model)
model %>% compile(
loss = "mean_absolute_percentage_error",
optimizer = optimizer_adam(lr = 0.001, beta_1 = 0.9, beta_2 = 0.999 ),
metrics = c('accuracy')
)
Fitted_model = model %>% fit(
x_train, y_train,
epochs = 50, batch_size = 20,
validation_split = 0.2
)
score <- model %>% evaluate(
x_train, y_train
)
cat('Test loss:', score$loss, '\n')
cat('test accuracy:', score$acc, '\n')
y_predict <- model %>% predict(x_test, batch_size = 128)发布于 2019-07-23 07:47:17
我在这里问问题,因为我没有资格发表评论.要想得到一个答案,如果是您的数据或模型导致您的问题,我们需要查看数据,或至少得到数据的形状。此外,模型的某些输出,如精度等,也不会受到影响。
关于你的问题1::,你所说的不同结果是什么意思?诺马利,你初始化每一层的权重。如果您不设置kernel_initializer属性,则keras将使用
kernel_initializer ='glorot_uniform'如API中所示。https://keras.io/layers/core/因此,如果你不设置种子,你的重量将是不同的每一次运行。这就是为什么即使你用相同的数据进行训练,也会得到不同的结果。
问题2: Normaly使用培训数据的子集作为验证数据。有关这方面的更多信息,您可以阅读此https://towardsdatascience.com/train-validation-and-test-sets-72cb40cba9e7
总的来说,即使您使用您的模型已经看到的数据(您的培训数据),您的验证准确率为0%表明,您的模型并没有真正学习在培训。这可能是因为你有一个非常小的网络,但许多功能。您可以尝试更仔细地选择您的功能,并进行功能选择。您可以在这里找到一些输入,https://towardsdatascience.com/feature-selection-techniques-in-machine-learning-with-python-f24e7da3f36e,也可以增加您的网络并调优超参数以获得更好的结果(但我将从特性选择开始)。要了解超参数调优的想法,这可能会很有帮助:https://www.analyticsvidhya.com/blog/2018/11/neural-networks-hyperparameter-tuning-regularization-deeplearning/
我希望这能帮到你。如果有什么不清楚的地方,可以随便问一下。
https://stackoverflow.com/questions/57149339
复制相似问题