Skip to content

Commit 945295e

Browse files
fix output size
1 parent eed3748 commit 945295e

File tree

2 files changed

+20
-5
lines changed

2 files changed

+20
-5
lines changed

nlp_class2/ner_rnn.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
def main():
88
Xtrain, Ytrain, Xtest, Ytest, word2idx, tag2idx = get_data(split_sequences=True)
99
V = len(word2idx)
10-
rnn = RNN(10, [10], V)
10+
K = len(tag2idx)
11+
rnn = RNN(10, [10], V, K)
1112
rnn.fit(Xtrain, Ytrain, epochs=70)
1213
print "train f1 score:", rnn.f1_score(Xtrain, Ytrain)
1314
print "test f1 score:", rnn.f1_score(Xtest, Ytest)

nlp_class2/pos_rnn.py

+18-4
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@
1717

1818

1919
class RNN:
20-
def __init__(self, D, hidden_layer_sizes, V):
20+
def __init__(self, D, hidden_layer_sizes, V, K):
2121
self.hidden_layer_sizes = hidden_layer_sizes
2222
self.D = D
2323
self.V = V
24+
self.K = K
2425

2526
def fit(self, X, Y, learning_rate=1e-4, mu=0.99, epochs=30, show_fig=True, activation=T.nnet.relu, RecurrentUnit=GRU, normalize=False):
2627
D = self.D
@@ -35,8 +36,8 @@ def fit(self, X, Y, learning_rate=1e-4, mu=0.99, epochs=30, show_fig=True, activ
3536
self.hidden_layers.append(ru)
3637
Mi = Mo
3738

38-
Wo = init_weight(Mi, V)
39-
bo = np.zeros(V)
39+
Wo = init_weight(Mi, self.K)
40+
bo = np.zeros(self.K)
4041

4142
self.We = theano.shared(We)
4243
self.Wo = theano.shared(Wo)
@@ -53,6 +54,13 @@ def fit(self, X, Y, learning_rate=1e-4, mu=0.99, epochs=30, show_fig=True, activ
5354
Z = ru.output(Z)
5455
py_x = T.nnet.softmax(Z.dot(self.Wo) + self.bo)
5556

57+
testf = theano.function(
58+
inputs=[thX],
59+
outputs=py_x,
60+
)
61+
testout = testf(X[0])
62+
print "py_x.shape:", testout.shape
63+
5664
prediction = T.argmax(py_x, axis=1)
5765

5866
cost = -T.mean(T.log(py_x[T.arange(thY.shape[0]), thY]))
@@ -127,10 +135,16 @@ def f1_score(self, X, Y):
127135
P = np.concatenate(P)
128136
return f1_score(Y, P, average=None).mean()
129137

138+
139+
def flatten(l):
140+
return [item for sublist in l for item in sublist]
141+
142+
130143
def main():
131144
Xtrain, Ytrain, Xtest, Ytest, word2idx = get_data(split_sequences=True)
132145
V = len(word2idx) + 1
133-
rnn = RNN(10, [10], V)
146+
K = len(set(flatten(Ytrain)) | set(flatten(Ytest)))
147+
rnn = RNN(10, [10], V, K)
134148
rnn.fit(Xtrain, Ytrain)
135149
print "train score:", rnn.score(Xtrain, Ytrain)
136150
print "test score:", rnn.score(Xtest, Ytest)

0 commit comments

Comments
 (0)