1

R で株価を予測するための Siraj のコードを複製しようとしています ( https://github.com/llSourcell/How-to-Predict-Stock-Prices-Easily-Demo )。

これは私のコードです:

url <- "https://raw.githubusercontent.com/llSourcell/How-to-Predict-Stock-Prices-Easily-Demo/master/sp500.csv"
sp500 <- read.csv(url, header = FALSE, stringsAsFactors = FALSE)
colnames(sp500) <- "closingPrice"

# choose sequence length
seq_length <- 50
sequence_length <- seq_length + 1
result <- list()
for (i in 1:(nrow(sp500) - seq_length)){
  result[[i]] <- sp500[i : (i + seq_length),1]
}

# normalised data
normalised_data <- list()
for (i in 1:length(result)){
  normalised_window <- ((result[[i]] / result[[i]][[1]]) - 1)
  normalised_data[[i]] <- normalised_window
}
result <- normalised_data

# test <- do.call(rbind, result)
# define train and test datasets
row <- round(0.9 * length(result))
train <- result[1:as.integer(row)]
# train <- sample(train)
x_train <- lapply(train, '[', -length(train[[1]]))
y_train <- lapply(train, '[', length(train[[1]]))
test = result[(as.integer(row)+1):length(result)]
x_test <- lapply(test, '[', -length(test[[1]]))
y_test <- lapply(test, '[', length(test[[1]]))

x_train <- array(x_train, dim = c(3709, 51, 1))
x_test <- array(x_test, dim = c(412, 51, 1))


#########################
# Step 2: Build a model #
#########################

library(keras)

model <- keras_model_sequential()
model %>% layer_lstm(units = 51L, return_sequences = TRUE, input_shape = c(NULL, 1L))

最後の行はエラーを返します:

Error in py_call_impl(callable, dots$args, dots$keywords) : 
  ValueError: Input 0 is incompatible with layer lstm_5: expected ndim=3, found ndim=2

元のコードでは、Siraj はinput_dimおよびoutput_dimLSTM レイヤーへの引数を使用しますがlayer_lstm()、R の関数にはこの引数が含まれていません。Keras 2 では減価償却されており、unitsandを使用する必要があることがわかりましたが、、 ...input_shapeを試しましたが、機能しません。input_shape = c(1L)input_shape = c(NULL, 1L)input_shape = c("None", 1L)

4

0 に答える 0