Neural network Keras:什么是循环网络的正确数据格式?

Neural network Keras:什么是循环网络的正确数据格式?,neural-network,theano,deep-learning,keras,recurrent-neural-network,Neural Network,Theano,Deep Learning,Keras,Recurrent Neural Network,我试图建立一个循环网络,对序列(多维数据流)进行分类。我肯定遗漏了什么,因为在运行代码时: from keras.models import Sequential from keras.layers import LSTM, Dropout, Activation import numpy as np ils = 10 # input layer size ilt = 11 # input layer time steps hls = 12

我试图建立一个循环网络,对序列(多维数据流)进行分类。我肯定遗漏了什么,因为在运行代码时:

from keras.models import Sequential
from keras.layers import LSTM, Dropout, Activation
import numpy as np

ils = 10            # input layer size
ilt = 11            # input layer time steps
hls = 12            # hidden layer size
nhl = 2             # number of hidden layers
ols = 1             # output layer size
p = 0.2             # dropout probability
f_a = 'relu'        # activation function
opt = 'rmsprop'     # optimizing function

#
# Building the model
#
model = Sequential()

# The input layer
model.add(LSTM(hls, input_shape=(ilt, ils), return_sequences=True))
model.add(Activation(f_a))
model.add(Dropout(p))

# Hidden layers
for i in range(nhl - 1):
    model.add(LSTM(hls, return_sequences=True))
    model.add(Activation(f_a))
    model.add(Dropout(p))

# Output layer
model.add(LSTM(ols, return_sequences=False))
model.add(Activation('softmax'))

model.compile(optimizer=opt, loss='binary_crossentropy')

#
# Making test data and fitting the model
#

m_train, n_class = 1000, 2
data = np.array(np.random.random((m_train, ilt, ils)))
labels = np.random.randint(n_class, size=(m_train, 1))


model.fit(data, labels, nb_epoch=10, batch_size=32)
我得到输出(被截断):


这是数据格式的问题吗。

对于我来说,当我在真实的数据集上尝试时,问题已经解决了。区别在于,在真实数据集中,我有不止一个标签。因此,此代码所使用的数据集示例如下:

(...)
ols = 2  # Output layer size
(...)

m_train, n_class = 1000, ols
data = np.array(np.random.random((m_train, ilt, ils)))
labels = np.random.randint(n_class, size=(m_train, 1))
# Make labels onehot
onehot_labels = np.zeros(shape=(labels.shape[0], ols))
onehot_labels[np.arange(labels.shape[0]), labels.astype(np.int)] = 1

对我来说,当我在真实的数据集上尝试它时,问题已经解决了。区别在于,在真实数据集中,我有不止一个标签。因此,此代码所使用的数据集示例如下:

(...)
ols = 2  # Output layer size
(...)

m_train, n_class = 1000, ols
data = np.array(np.random.random((m_train, ilt, ils)))
labels = np.random.randint(n_class, size=(m_train, 1))
# Make labels onehot
onehot_labels = np.zeros(shape=(labels.shape[0], ols))
onehot_labels[np.arange(labels.shape[0]), labels.astype(np.int)] = 1

您使用什么版本的Keras?在最新版本中-此代码在我的计算机上运行;Theano v0.8.2。仍然无法实现此功能。请尝试在最后一层中将“softmax”更改为“sigmoid”。没有帮助。使用不同的目标损失函数也没有帮助(MSE)。同样,更改优化器也没有帮助(尝试sgd)。您使用什么版本的Keras?在最新版本中-此代码在我的计算机上运行;Theano v0.8.2。仍然无法实现此功能。请尝试在最后一层中将“softmax”更改为“sigmoid”。没有帮助。使用不同的目标损失函数也没有帮助(MSE)。同样,更改优化器也没有帮助(sgd)。