Python の反復処理について質問があります。現時点では、次のコード (の一部) を使用して、非常に単純なニューラル ネットワークを構築しようとしています。
class neural_net:
def __init__(self, n_neurons, n_input):
self.n_neurons = n_neurons
self.n_input = n_input
self.input = []
self.weights = []
self.output = []
def generate_input(self):
input = [0.0,0.0,1.0]
self.input = input
def generate_random_weights(self):
weights = [[0] * self.n_input ] * (self.n_neurons)
for i in range(self.n_neurons):
for ii in range(self.n_input):
weights[i][ii] = round(random.random(), 1)
self.weights = weights
関数 generate_random_weights では、i=0 と i=1 は常に同時に更新されます。print'weights:', self.weightsを使用して印刷すると、結果は常に次のようになります。
weights: [[0.2, 0,1, 0,8], [0,2, 0,1, 0,8]]
最初と 2 番目のリストは常に同じです。なぜこれが起こるのか誰か知っていますか?