파이썬 TypeError: 'float' object is not subscriptable
조회수 8604회
안녕하세요.
파이썬을 사용하여 신경망 손실 함수의 기울기를 구하는 코드를 작성 하고 있습니다.
다음은 코드입니다.
def num_grad(self, f, key):
h = 0.001
W = self.params[key]
result = [[0 for j in range(len(W[0]))] for i in range(len(W))]
for i in range(len(W)):
for j in range(len(W[0])):
tmp_val = W[i][j]
self.params[key][i][j] = tmp_val + h
f1 = f(self.params[key])
self.params[key][i][j] = tmp_val - h
f2 = f(self.params[key])
result[i][j] = (f1-f2)/(2*h)
self.params[key] = tmp_val
return result
이때 self.params[key]
는 가중치 또는 편향을 나타내는 2차원 list
인데,
self.params[key][i][j]
로 접근하려고 하면 값은 나오는데도
TypeError: 'float' object is not subscriptable
에러가 뜨면서 진행할 수 없습니다.
인터넷에서 찾아보니 list
가 아닌 변수에 인덱스로 접근할 경우 뜨는 에러라고 하는데,
저같은 경우에는 정상적으로 self.params[key][i][j]
의 값이 나오는 것과 동시에 해당 에러가 뜹니다.
어떻게 하면 좋을까요?
댓글 입력