【发布时间】:2017-07-09 21:59:26
【问题描述】:
我有一个Aspect based sentiment analysis 的任务,我必须首先预测每个句子的方面。方面是预定义的,总共有 19 个。
我必须实现一个2-layer Neural Network(用于上述任务),其中第一层是完全连接的,第二层输出一个 softmax 分布。
每个句子由词向量的平均值表示。使用的词向量模型是GoogleNews 300 dimensional wordvec model [ https://drive.google.com/file/d/0B7XkCwpI5KDYNlNUTTlSS21pQmM/edit?usp=sharing ]。
因此,对于每个句子,我都有一个 300 维的词向量(句子中所有词的所有 300 维词向量的平均值)。
输出y 定义为y(i) = 1/k 当句子具有方面 i 和总共 k 个方面
否则y(i)=0
(注意——一个句子可以有多个方面)
实现上述模型 -
我总共有 1739 个句子,每个句子都有一个 300-dim 词向量。所以我有一个形状为(1739,300) 的np.array X。同样y 是np.array 形状(1739,19)。
我使用 keras 的代码是 -
model = Sequential()
model.add(Dense(output_dim=64, input_dim=300))
model.add(Activation('relu'))
model.add(Dense(output_dim=19))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
model.fit(X, y, nb_epoch=3)
此代码向我抛出错误 -Exception: Error when checking model input: expected dense_input_4 to have shape (None, 300) but got array with shape (1739, 1)
我是深度学习和 keras 的新手,所以如果有人能说明我做错了什么?
【问题讨论】:
-
你能打印出 X 和 y 的形状吗?似乎出了点问题,它们的形状与您的预期不同。
-
X.shape 是
(1739, )& y.shape 是(1739,) -
X 不应该有一个形状 (1739, 300) 吗?
-
是的,感谢@MarcinMożejko 指出这一点。我再次形成
X和y并且它们现在分别具有形状(1739,300)和(1739,19)并且上面的代码运行无错误。顺便说一句,您是否在我的代码中发现了任何其他异常/错误/奇怪的情况......或者您想提出任何改进建议? -
您可能会检查是否发生过拟合,并最终通过某种正则化来防止它。
标签: nlp deep-learning keras sentiment-analysis