전산 신경 과학 수업을 Coursera에 가져갈 것입니다. 지금까지 그것은 갈 수있었습니다! 그러나, 나는 퀴즈 문제 중 하나에 조금 붙어 있어요.선형 반복 네트워크의 정상 상태 출력 찾기
나는 인증서 또는 아무것도이 클래스를 복용하지 않습니다. 재미만을 위해. 나는 이미 퀴즈를 풀었고 얼마 후 대답을 추측 했으므로 퀴즈에 답하지 않을 것입니다.
질문은 다음과 같이 구성되어 있습니다. 5 개의 입력 노드와 5 개의 출력 노드로 구성된 선형 순환 네트워크가 있다고 가정합니다. 우리의 네트워크의 가중치 행렬의 W이라고 가정 해 봅시다 : (. 기본적으로 모든 0.1, 대각선에 0.6 이외의)
W = [0.6 0.1 0.1 0.1 0.1]
[0.1 0.6 0.1 0.1 0.1]
[0.1 0.1 0.6 0.1 0.1]
[0.1 0.1 0.1 0.6 0.1]
[0.1 0.1 0.1 0.1 0.6]
을 우리는 U를 정적 입력 벡터를 가지고 있다고 가정하자 :를
u = [0.6]
[0.5]
[0.6]
[0.2]
[0.1]
마지막으로, 우리는 재발 가중치 행렬의 M을 가지고 있다고 가정 :
M = [-0.25, 0, 0.25, 0.25, 0]
[0, -0.25, 0, 0.25, 0.25]
[0.25, 0, -0.25, 0, 0.25]
[0.25, 0.25, 0, -0.25, 0]
[0, 0.25, 0.25, 0, -0.25]
다음 중 네트워크의 정상 상태 출력 v_ss는 무엇입니까? (힌트 : 재발 네트워크에서 강의를 참조하고, (당신이 "EIG"기능을 사용할 수 있습니다) 고유 벡터/값을 처리하는 몇 옥타브 또는 matlab에 코드를 작성하는 고려) '
클래스에 대한 메모를 할 수 있습니다 발견 된 here. 특히 정상 상태 공식의 공식은 슬라이드 5와 6에서 찾을 수 있습니다.
다음 코드가 있습니다.
import numpy as np
# Construct W, the network weight matrix
W = np.ones((5,5))
W = W/10.
np.fill_diagonal(W, 0.6)
# Construct u, the static input vector
u = np.zeros(5)
u[0] = 0.6
u[1] = 0.5
u[2] = 0.6
u[3] = 0.2
u[4] = 0.1
# Connstruct M, the recurrent weight matrix
M = np.zeros((5,5))
np.fill_diagonal(M, -0.25)
for i in range(3):
M[2+i][i] = 0.25
M[i][2+i] = 0.25
for i in range(2):
M[3+i][i] = 0.25
M[i][3+i] = 0.25
# We need to matrix multiply W and u together to get h
# NOTE: cannot use W * u, that's going to do a scalar multiply
# it's element wise otherwise
h = W.dot(u)
print 'This is h'
print h
# Ok then the big deal is:
# h dot e_i
# v_ss = sum_(over all eigens) ------------ e_i
# 1 - lambda_i
eigs = np.linalg.eig(M)
eigenvalues = eigs[0]
eigenvectors = eigs[1]
v_ss = np.zeros(5)
for i in range(5):
v_ss += (np.dot(h,eigenvectors[:, i]))/((1.0-eigenvalues[i])) * eigenvectors[:,i]
print 'This is our steady state v_ss'
print v_ss
정답은 :
This is our steady state v_ss
[ 0.64362264 0.5606784 0.56007018 0.50057043 0.40172501]
사람이 내 버그를 발견 할 수 :
[0.616, 0.540, 0.609, 0.471, 0.430]
이 내가 무엇입니까 무엇인가? 정말 고맙습니다! 나는 그것을 진심으로 감사하고 오랜 블로그 포스트에 사과한다. 본질적으로, 만 보시면됩니다. 상단 링크에는 슬라이드 5와 6이 있습니다.
연락 할 사람을 알지 못했습니다. 이 질문에 대한 답변을 제 프로그램에 가지고 있다고 확신하십니까? 나는 Coursera가 사람들의 무리를 위해 잘못된 해결책을 내놓을 것이라고 생각하지 않습니다. 내 코드가 버그가 있어야하거나 논리에 결함이 있어야한다고 생각합니다. – jlarks32