Keras Embedding层输出维度
Keras Embedding layer output dimensionality
我对这段代码片段中嵌入层中指定的输出维度感到困惑
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,Embedding 的输出维度不应该是 10000 吗?
max_features
是词数,不是维度。在您的嵌入层中,您有 10000 个单词,每个单词都表示为维度为 32 的嵌入。
嵌入的输出维数是您用来表示每个单词的张量的维数。在您的例子中,您使用 32 维张量来表示您可能在数据集中获得的 10k 个单词中的每一个。
我对这段代码片段中嵌入层中指定的输出维度感到困惑
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,Embedding 的输出维度不应该是 10000 吗?
max_features
是词数,不是维度。在您的嵌入层中,您有 10000 个单词,每个单词都表示为维度为 32 的嵌入。
嵌入的输出维数是您用来表示每个单词的张量的维数。在您的例子中,您使用 32 维张量来表示您可能在数据集中获得的 10k 个单词中的每一个。