install.packages('tensorflow')
install.packages('keras')
normalize <- function(x) {
num <- x - min(x)
denom <- max(x) - min(x)
return (num/denom)
iris <- as.data.frame(lapply(iris[1:4], normalize)
# Determine sample size
ind <- sample(2, nrow(....), replace=TRUE, prob=c(0.67, 0.33))
# Split the `iris` data
iris.training <- ....[ind==1, 1:4]
iris.test <- iris[ind==2, 1:4]
# Split the class attribute
iris.trainingtarget <- iris[...==1, 5]
iris.testtarget <- iris[ind==2, 5]
# One hot encode training target values
iris.trainLabels <- to_categorical(..................)
# One hot encode test target values
iris.testLabels <- to_categorical(...............)
# Print out the iris.testLabels to double check the result
print(.............)
# Initialize a sequential model
model <- ......................
# Add layers to the model
model %>%
layer_dense(units = 8, activation = 'relu', input_shape = c(4)) %>%
layer_dense(units = 3, activation = 'softmax')
# Print a summary of a model
summary(model)
# Get model configuration
get_config(model)
# Get layer configuration
get_layer(model, index = 1)
# List the model's layers
model$layers
# List the input tensors
model$inputs
# List the output tensors
model$outputs
# Compile the model
model %>% compile(
loss = 'categorical_crossentropy',
optimizer = 'adam',
metrics = 'accuracy'
)
# Fit the model
model %>% fit(
iris.training,
iris.trainLabels,
epochs = 200,
batch_size = 5,
validation_split = 0.2
)
# Store the fitting history in `history`
history <- model %>% fit(
iris.training,
iris.trainLabels,
epochs = 200,
batch_size = 5,
validation_split = 0.2
)
# Plot the history
plot(history)
# Plot the accuracy of the training data
plot(history$metrics$acc, main="Model Accuracy", xlab = "epoch", ylab="accuracy", col="blue", type="l")
# Plot the accuracy of the validation data
lines(history$metrics$val_acc, col="green")
# Add Legend
legend("bottomright", c("train","test"), col=c("blue", "
# Evaluate on test data and labels
score <- model %>% evaluate(iris.test, iris.testLabels, batch_size = 128)
# Print the score
print(score)
# Initialize a sequential model
model <- keras_model_sequential()
# Build up your model by adding layers to it
model %>%
layer_dense(units = 8, activation = 'relu', input_shape = c(4)) %>%
layer_dense(units = 3, activation = 'softmax')
# Define an optimizer
sgd <- optimizer_sgd(lr = 0.01)
# Use the optimizer to compile the model
model %>% compile(optimizer=sgd,
loss='categorical_crossentropy',
metrics='accuracy')
# Fit the model to the training data
model %>% fit(
iris.training, iris.trainLabels,
epochs = 200, batch_size = 5,
validation_split = 0.2
)
# Evaluate the model
score <- model %>% evaluate(iris.test, iris.testLabels, batch_size = 128)
# Print the loss and accuracy metrics
print(score)
# Define an optimizer
sgd <- optimizer_sgd(lr = 0.01)
# Compile the model
model %>% compile(optimizer=sgd,
loss='categorical_crossentropy',
metrics='accuracy')
# Fit the model to the training data
history <- model %>% fit(
iris.training, iris.trainLabels,
epochs = 200, batch_size = 5,
validation_split = 0.2
)
# Plot the model loss
plot(history$metrics$loss, main="Model Loss", xlab = "epoch", ylab="loss", col="blue", type="l")
lines(history$metrics$val_loss, col="green")
legend("topright", c("train","test"), col=c("blue", "green"), lty=c(1,1))
# Plot the model accuracy
plot(history$metrics$acc, main="Model Accuracy", xlab = "epoch", ylab="accuracy", col="blue", type="l")
lines(history$metrics$val_acc, col="green")
legend("bottomright", c("train","test"), col=c("blue", "green"), lty=c(1,1))