我刚刚学习ML基础知识。我正在使用keras / tensorflow(通过RStudio)。我正在尝试开发一个网络,以模拟与11数字向量的输出相关的4数向量之间的关系。值都在0-1之间。每个向量的总和必须小于1。 该模型是
model_l1 <- keras_model_sequential()
model_l1 %>%
layer_dense(units = 64, activation = 'sigmoid', input_shape = c(4),dtype = 'float32') %>%
layer_dropout(rate = 0.6) %>%
layer_dense(units = 32, activation = 'sigmoid',dtype = 'float32') %>%
layer_dropout(rate = 0.4) %>%
layer_dense(units = 11, activation = 'sigmoid',dtype = 'float32')
model_l1 %>% compile(
loss = 'mean_squared_error',
optimizer = 'sgd',
metrics = c('mse','acc')
)
训练与损失收敛:0.0037 - mean_squared_error:0.0037 - acc:0.9898。
如果我使用测试集来评估模型:
model_l1 %>% evaluate(l_x_test, l_y_test)
我得到了这个:
$损失 [1] 0.001548773
$ mean_squared_error [1] 0.001548773
$ ACC [1] 0.9999
问题是当我尝试使用模型进行预测时(例如使用相同的测试集):
model_l1 %>% predict_classes((l_x_test)
我期待11列输出,但我获得了一个具有常数的矢量:
[1] 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 .....
我有点卡在这里所以我会感激任何帮助 亲切的问候
PS: 网络是使用网页样本创建的,所以我认为我的改编不正确(请记住我只是想学习机制,所以我提前道歉以防万一)
答案 0 :(得分:0)