我是机器学习工具的新手,并且已经在R中安装了Keras。在考虑更简单的模型时,我现在想将神经网络用于更多特殊目的。通常,神经网络应该是函数Phi: R^d -> R
,其中输入是d维的。
(samples,times,input_dimension)=(M,n,d)
,在其上分别应用了神经网络。输出应为(samples,times)=(M,n)
形式,以便每次将神经网络的预测值与所需目标进行比较-并针对每个样本进行比较。仅供参考,数字范围在d=5, n=1000, M=100
左右。
基于此,建议在具有d维输入和1维目标的M*n
样本上运行“常规”神经网络。但是,问题在于损失函数取决于每个时间步长中神经网络的先前评估,即损失的形式为
l(y_pred,y_target) = sum_{i=1}^n (y^i_pred-y^i_target+f_i(...))^2
其中y^i_pred
和y^i_target
分别是第i个时间步长的预测值和目标值,而f_i
是附加函数(取决于神经网络的二阶导数) ,但这是另一回事,与先前的损失有关。
到目前为止,我有以下代码来说明我的问题:
input <- array(data1,dim=c(M,n,d))
target <- array(data2,dim=c(M,n))
myloss <- function(f,y_true,y_pred) {
K <- backend()
return(K$sum((y_pred-y_true+f)^2))
}
library(keras)
NN <- keras_model_sequential()
NN %>%
layer_dense(units=20,activation='relu',input_shape=c(n,d)) %>%
layer_dense(units=20,activation='relu') %>%
layer_dense(units=1,activation='relu')
summary(NN)
NN %>% compile(
loss function(y_true,y_pred) myloss(f,y_true,y_pred),
optimizer = "adam",
metrics = "acc"
)
history <- NN %>% fit(
input, target,
epochs = 30, batch_size = 20,
validation_split = 0.1
)
我收到各种错误消息(关于目标和自定义损失函数的维数),因此我的问题是:是否有可能将我的问题合并到Keras模型中?还是应该使用卷积神经网络?我还研究了循环网络,但就我而言,只有损失取决于“先前的价值”。也许有人可以提供建议,我将不胜感激。