Я новичок в области машинного обучения.Я использовал пакет keras в R для классификации людей, страдающих диабетом, используя набор данных о диабете Pima Indian и подходил к Conv1d.Я не уверен, где я делаю ошибку, но получаю некоторые ошибки.
1: 8 столбцов - это элементы, а 9-й столбец - наша метка с кодировкой 0 и 1.
Размеры данных следующие:
dim (data)=(768,9)#Main data dimension
dim (training)=(534, 8)#Training set dimension
dim (test)=(234,8)#Testing set dimension
Пожалуйста, помогитемне идентифицировать ошибку.Заранее спасибо.
data=read.csv(file.choose(), header=T)
data=as.matrix(data)
head(data)
dimnames(data)=NULL
str(data)
#Data Normalization
data[, 1:8]=normalize(data[, 1:8])
summary(data)
#Data Partition
set.seed(1234)
ind=sample(2, nrow(data), replace=T, prob=c(0.7,0.3))
training=data[ind==1, 1:8]
test=data[ind==2, 1:8]
trainingtarget=data[ind==1, 9]
testtarget=data[ind==2, 9]
# reshape
dim(training) <- c(nrow(training), 8, 1)
dim(test) <- c(nrow(test), 8, 1)
dim(trainingtarget) <- c(nrow(trainingtarget), 1, 1)
dim(testtarget) <- c(nrow(testtarget), 1, 1)
cnn_bc_model <- keras_model_sequential()
cnn_bc_model %>%
layer_conv_1d(filter=32, kernel_size=5, padding="same", input_shape=c(8,1)) %>%
layer_activation("relu") %>%
layer_conv_1d(filter=32, kernel_size=3) %>%
layer_activation("relu") %>%
layer_max_pooling_1d(pool_size=2) %>%
layer_dropout(0.2) %>%
layer_dense(units=1, activation='sigmoid')
cnn_bc_model %>% compile(loss='binary_crossentropy', optimizer='nadam', metrics = c('accuracy'))
cnn_bc_history <- cnn_bc_model %>% fit(training, trainingtarget, epochs=100,
batch_size=8, validation_split=0.2)
#Now evaluate the model with our test data set
cnn_bc_model %>%
evaluate(test, testLabels)
Ошибка:
Error in py_call_impl(callable, dots$args, dots$keywords) :
ValueError: A target array with shape (534, 1, 1) was passed for output of shape (None, 3, 1) while using as loss `binary_crossentropy`. This loss expects targets to have the same shape as the output.