Keras嵌入层输出维数

时间:2019-01-21 14:22:11

标签: keras keras-layer

我对此代码段的嵌入层中指定的输出尺寸感到困惑

from keras.datasets import imdb
from keras.preprocessing import sequence
from keras.layers import Dense
from keras.models import Sequential
from keras.layers import Embedding, SimpleRNN

max_features = 10000
maxlen = 500
batch_size = 32

print('Loading data...')
(input_train, y_train), (input_test, y_test) = imdb.load_data(num_words=max_features)

print(len(input_train), 'train sequences')
print(len(input_test), 'test sequences')
print('Pad sequences (samples x time)')

input_train = sequence.pad_sequences(input_train, maxlen=maxlen)
input_test = sequence.pad_sequences(input_test, maxlen=maxlen)

print('input_train shape:', input_train.shape)
print('input_test shape:', input_test.shape)

print(input_train)

model = Sequential()
model.add(Embedding(max_features, 32))
model.add(SimpleRNN(32))
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])

由于max_features为10000,嵌入不应该具有10000的输出维数吗?

2 个答案:

答案 0 :(得分:2)

max_features是单词的数量,而不是维数。在嵌入层中,您有10000个单词,每个单词都表示为尺寸为32的嵌入。

答案 1 :(得分:1)

嵌入的输出维数是用来表示每个单词的张量的维数。在您的情况下,您使用32维张量来表示可能在数据集中获得的每个10k单词。