我试图了解SIMPLERNN中涉及的矩阵计算。
我从一些博客文章和stackoverflow中了解到,SimpleRNN(units)创建了一个层,其中每一层中均包含无数量的RNN单元。 SimpleRNN涉及以下计算
W =内核#shape-(1,units)
U = recurrent_kernel#shape-(单位,单位)
B =偏向#shape-(单位,)
output = new_state = act(W *输入+ U *状态+ B)
帮助我了解以下以下代码段的输入和输出尺寸。
用于生成X和Y的函数。其中Y是X的累加和。
'def generate_batch(n = 256):
X = np.random.choice(a=[0, 1], size = n*seq_len, p=[0.9, 0.1]).reshape(n, -1)
y = np.cumsum(X, axis=1)
X = X.reshape(n, -1, 1)
y = y.reshape(n, -1, 1)
return(X, y) #returns shape X,y-(256,60,1)
model = Sequential()
model.add(SimpleRNN(10,input_shape =(60,1),return_sequences = True))
model.add(Dense(1))
model.compile(loss ='mse',optimizer ='adam')
X,y = generate_batch()#(256,60,1)
model.fit(X,y,verbose = 0,epochs = 1)'
请帮我弄清楚RNN的输入维,状态和RNN的输出维,矩阵计算是如何发生的,即(W *输入+ U *状态+ B)。