import numpy as np
from keras.models import Sequential
from keras.layers import LSTM, Dense
# each example (of which we have a 100) is a sequence of 10 words and
# each words is encoded as 16 element vectors
X = np.random.rand(100, 10, 16)
y = np.random.choice(2, 100)
model = Sequential()
model.add(LSTM(128, input_shape=(10, 16))
model.add(Dense(1, activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='sgd')
# fit model
model.fit(X, y, epochs=3, batch=16)
3 回答
我们在代码中绘制一个例子 .
假设我们有一些句子,句子中的每个单词都被编码为一个向量(也许来自word2vec的向量) .
假设我们想要将每个句子分类为两个类(0,1)中的一个 . 我们可以像这样构建一个简单的分类器:
是的,你是对的 . 实际上你的输入需要是一个3D矩阵 . 例如,如果您有n个序列,则每个序列的长度为m,并且每个序列数据都具有d个特征,您的RNN的输入必须是维度(n,m,d) .
例如,如果您有一个时间序列
(X1,..,Xt)
并且您希望训练预测器以预测地平线为1并使用长度为3的序列,则您的输入和输出将为:因此,存在t-3序列,该序列中的每一个具有长度3并且具有1个特征 . 尺寸应为(t-3,3,1) .