Bonjour, je m’intéresse de plus en plus aux réseaux de neurones et il y’a une question que je me pose sur l’adaptabilité de l’ia. Actuellement, tous les exemples reposes sur des jeux de données de même taille l’exemple qui reviens souvent et celui du calcule binaire : [0,0,1]=0 [1,1,1]=1 [0,1,1]=1 combien fait : [0,1,1]
Cette exemple exprime mon probleme. Le jeu de donné et toujours constitué de 3 inputs et de 1 outpouts. Mais le réseau de neurone peut il supporter des inputs de différente taille ? par exemple [1,1] ou [0,0]
l’algo peut t’il s’adapter a une taille variable des données ?
le code correspondant à l’exemple !
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | from numpy import exp, array, random, dot class NeuralNetwork(): def __init__(self): random.seed(1) self.synaptic_weights = 2 * random.random((3, 1)) - 1 def __sigmoid(self, x): return 1 / (1 + exp(-x)) def __sigmoid_derivative(self, x): return x * (1 - x) def train(self, training_set_inputs, training_set_outputs, number_of_training_iterations): for iteration in range(number_of_training_iterations): output = self.think(training_set_inputs) error = training_set_outputs - output adjustment = dot(training_set_inputs.T, error * self.__sigmoid_derivative(output)) self.synaptic_weights += adjustment def think(self, inputs): return self.__sigmoid(dot(inputs, self.synaptic_weights)) if __name__ == "__main__": neural_network = NeuralNetwork() print("Random starting synaptic weights: ") print(neural_network.synaptic_weights) training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]]) training_set_outputs = array([[0, 1, 1, 0]]).T neural_network.train(training_set_inputs, training_set_outputs, 10000) print("New synaptic weights after training: ") print(neural_network.synaptic_weights) print("Considering new situation [1, 0, 0] -> ?: ") print(neural_network.think(array([1, 0, 0]))) |
dernière remarque, le programme ne donne pas la solution 0 ou 1 mais une tendance, à la fin il donne comme résultat 0.99 la aussi je voudrais savoir si c’était une propriété propre au réseau de neurone de donner une tendance au lieu d’une réponse exacte, (en l’occurrence 1) ?