作为改进我的模型的一种方法,我想对一个句子的 GloVe 向量进行平均。但是,我无法让 np.mean 工作。以下代码在不平均单词时有效。(从其他代码复制)
embeddings_dict = {}
with open("glove.6B.50d.txt", 'r') as f:
for line in f:
values = line.split()
word = values[0]
vector = np.asarray(values[1:], "float32")
embeddings_dict[word] = vector
g = open("input.txt", 'r')
vector_lines = []
for line in g:
clean_line = line.translate(str.maketrans('', '', string.punctuation))
array_line = clean_line.lower().split()
vec_line = []
i = 0
for word in array_line:
i += 1
try:
vec_line.append(embeddings_dict[word])
except:
vec_line.append(embeddings_dict["unk"])
while i < 30: //pad up to thirthy words with zero vectors
vec_line.append(np.zeros(50))
i += 1
vector_lines.append(np.asarray(vec_line))
X = np.asarray(vector_lines)
为了平均单词,我正在修改一小部分代码
try:
vec_line.append(embeddings_dict[word])
except:
vec_line.append(embeddings_dict["unk"])
#padding is not necessary anymore
#while i < 30:
# vec_line.append(np.zeros(50))
# i += 1
vec_mean = np.mean(vec_line, axis=0, keepdims=True)[:,None]
vector_lines.append(vec_mean)
X = np.asarray(vector_lines)
这给了我错误“ValueError:无法将输入数组从形状(1,50)广播到形状(1,1)”。感觉好像我已经尽我所能尝试了对这段代码的所有可能修改,但我不断遇到形状问题。是什么导致了所有这些问题?