如何在 R 中的 Keras 输出层中使用不同的激活
How to use different activations in output layer in Keras in R
我想在 R 的 Keras 接口的输出层中组合更多类型的激活。另外,我想对不同的输出使用不同的损失函数。可以说我想让前两个神经元与 MSE 损失成线性关系,第二个 2 个神经元 sigmoid 与 BCE 损失和最后一个输出将是 relu 与 MAE 损失。到目前为止,我有这个但它不起作用:
model <- keras_model_sequential()
model %>% layer_dense(units=120, activation="selu",
input_shape=dim(X)[2]) # this is hidden layer, this works fine
model %>% layer_dense(units=120, activation=as.list(c(rep("linear",2),
rep("sigmoid",2), "relu"))) # output layer which is not working
model %>% compile(loss=as.list(c(rep("mean_squared_error",2),
rep("binary_crossentropy",2), "mean_absolute_error")), # problem here ?
optimizer=optimizer_adam(lr=0.001) ,metrics = "mae")
然后我用 model %>% fit(...)
拟合模型。
错误如下:
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: When passing a list as loss, it should have one entry per model outputs.
The model has 1 outputs, but you passed loss=['mean_squared_error', 'mean_squared_error', ...
感谢任何帮助。
EDIT :仅重写代码以便更好地阅读。
我认为如果你想有多个输出你需要使用功能(也就是说,不是顺序)API - 在这里看一些例子: https://keras.rstudio.com/articles/functional_api.html
我想在 R 的 Keras 接口的输出层中组合更多类型的激活。另外,我想对不同的输出使用不同的损失函数。可以说我想让前两个神经元与 MSE 损失成线性关系,第二个 2 个神经元 sigmoid 与 BCE 损失和最后一个输出将是 relu 与 MAE 损失。到目前为止,我有这个但它不起作用:
model <- keras_model_sequential()
model %>% layer_dense(units=120, activation="selu",
input_shape=dim(X)[2]) # this is hidden layer, this works fine
model %>% layer_dense(units=120, activation=as.list(c(rep("linear",2),
rep("sigmoid",2), "relu"))) # output layer which is not working
model %>% compile(loss=as.list(c(rep("mean_squared_error",2),
rep("binary_crossentropy",2), "mean_absolute_error")), # problem here ?
optimizer=optimizer_adam(lr=0.001) ,metrics = "mae")
然后我用 model %>% fit(...)
拟合模型。
错误如下:
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: When passing a list as loss, it should have one entry per model outputs.
The model has 1 outputs, but you passed loss=['mean_squared_error', 'mean_squared_error', ...
感谢任何帮助。
EDIT :仅重写代码以便更好地阅读。
我认为如果你想有多个输出你需要使用功能(也就是说,不是顺序)API - 在这里看一些例子: https://keras.rstudio.com/articles/functional_api.html