La syntaxe de l'argument d'initialisation du noyau doit ressembler à ceci. kernel_initializer=initializer_random_uniform(minval = -0.05, maxval = 0.05, seed = 104)
Essayez ces étapes.
1) des graines pour l'environnement de R avant d'importer keras/tensorflow
2) Définir configuration de session tensorflow à utiliser seul fil
3) des graines
4) tensorflow aléatoire Créer tensorflow session, cette graine et l'assigner à Keras backend.
5) Enfin, dans les couches de votre modèle, si vous utilisez initializers aléatoires comme random_uniform (ce qui est le défaut) ou random_normal alors vous devrez changer l'argument des semences à un entier Ci-dessous un exemple
# Set R random seed
set.seed(104)
library(keras)
library(tensorflow)
# TensorFlow session configuration that uses only a single thread. Multiple threads are a
# potential source of non-reproducible results, see: https://stackoverflow.com/questions/42022950/which-seeds-have-to-be-set-where-to-realize-100-reproducibility-of-training-res
#session_conf <- tf$ConfigProto(intra_op_parallelism_threads = 1L,
# inter_op_parallelism_threads = 1L)
# Set TF random seed (see: https://www.tensorflow.org/api_docs/python/tf/set_random_seed)
tf$set_random_seed(104)
# Create the session using the custom configuration
sess <- tf$Session(graph = tf$get_default_graph(), config = session_conf)
# Instruct Keras to use this session
K <- backend()
K$set_session(sess)
#Then in your model architecture, set seed to all random initializers.
model %>%
layer_dense(units = n_neurons, activation = 'relu', input_shape = c(100),kernel_initializer=initializer_random_uniform(minval = -0.05, maxval = 0.05, seed = 104)) %>%
layer_dense(units = n_neurons, activation = 'relu',kernel_initializer=initializer_random_uniform(minval = -0.05, maxval = 0.05, seed = 104)) %>%
layer_dense(units =c(100) ,kernel_initializer=initializer_random_uniform(minval = -0.05, maxval = 0.05, seed = 104))
Références: https://rstudio.github.io/keras/articles/faq.html#how-can-i-obtain-reproducible-results-using-keras-during-development https://rstudio.github.io/keras/reference/initializer_random_normal.html#arguments
J'utilise keras en python et il semble fonctionner quand je 'set.seed (42)' et 'tensorflow' d'importation,' tensorflow.set_seed (42) '. Pouvez-vous importer explicitement tensorflow dans R et essayez cela? En outre, cela ne fonctionne que lorsque vous travaillez avec des processeurs, pas avec des GPU. –
Je pense que je devrais essayer d'utiliser la bibliothèque R Tensorflow au lieu de la bibliothèque R Keras parce que Keras est intégré dans Tensorflow 1.2 –