运行R V4
当尝试运行具有预训练词嵌入的模型时,出现错误:py_call_impl(callable,dots $ args,dots $ keywords)错误: ValueError:没有为“ dense_16”提供数据。需要每个键中的数据:['dense_16']
我已经看到了几个与此问题有关的问题,而且似乎处理的数据类型错误,因此TensorFlow无法将其强制为正确的格式。话虽如此,正如在最后一部分代码中所看到的那样,我已将我的代码以向量形式强行插入矩阵,这似乎是建议,但仍然会出现错误。
创建单词嵌入的代码直接来自Chollet和Allaire的R深度学习的第6章,因此我对此很有信心。唯一的变化是我的数据。数据是作业/考试的文字,学生根据数据进行评分。您会注意到,exam.scores和class.scores包括27个学生(行),但是只有1行被输入到NN中。
setwd("C:/Users/tanne/Desktop/RData/Glove")
lines<-readLines("C:/Users/tanne/Desktop/RData/Glove/glove.6B.100d.txt")
embeddings_index<-new.env(hash = TRUE,parent = emptyenv())
gc()
for(i in 1:length(lines)){
line<-lines[[i]]
values <- strsplit(line," ")[[1]]
word <- values[[1]]
embeddings_index[[word]]<-as.double(values[-1])
}
#dim from Glove file
embedding_dim <- 100
embedding_matrix <- array(0, c(max_words, embedding_dim))
gc()
for (word in names(word_index)) {
index <- word_index[[word]]
if (index < max_words) {
embedding_vector <- embeddings_index[[word]]
if (!is.null(embedding_vector))
# Words not found in the embedding index will be all zeros.
embedding_matrix[index+1,] <- embedding_vector
}
}
model <- keras_model_sequential() %>%
layer_embedding(input_dim = max_words, output_dim = embedding_dim,
input_length = maxlen) %>%
layer_flatten() %>%
layer_dense(units = 32, activation = "relu") #%>%
layer_dense(units = 1, activation = "sigmoid")
summary(model)
get_layer(model, index = 1) %>%
set_weights(list(embedding_matrix)) %>%
freeze_weights()
model %>% compile(
optimizer="rmsprop",
loss="binary_crossentropy",
metrics=c("acc")
)
history<-model %>% fit(
as.matrix(class.text),c(class.scores[1,]),
epochs=20,
batch_size=32,
validation_data=list(as.matrix(exam.text),c(exam.scores[1,]))
)
错误:
File "C:\Users\tanne\Anaconda3\envs\r-tensorflow\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1278, in fit
validation_split=validation_split)
File "C:\Users\tanne\Anaconda3\envs\r-tensorflow\lib\site-packages\tensorflow\python\keras\engine\training.py", line 917, in _standardize_user_data
exception_prefix='target')
File "C:\Users\tanne\Anaconda3\envs\r-tensorflow\lib\site-packages\tensorflow\python\keras\engine\training_utils.py", line 130, in standardize_input_data
'for each key in: ' + str(names))```
显示数据状态:
> dim(exam.scores)
[1] 27 32
> dim(class.scores)
[1] 27 1492
> dim(exam.text)
[1] 32 500
> dim(exam.scores)
[1] 27 32
> class(exam.scores)
[1] "data.frame"
> class(class.scores)
[1] "data.frame"
> class(exam.text)
[1] "matrix" "array"
> class(class.text)
[1] "matrix" "array"
感谢您提出的任何建议或更多调试提示。