我有一个多类分类问题。假设我有一个特征矩阵:
A B C D
1 -1 1 -6
2 0.5 0 11
7 3.7 1 1
4 -50 1 0
和标签:
LABEL
0
1
2
0
2
我想尝试使用Keras沿每个特征行应用卷积核。假设nb\u filter=2,batch\u size=3。所以我希望卷积层的输入形状是(3,4),输出形状是(3,3)(因为它适用于AB、BC、CD)。
下面是我对Keras的尝试(v1.2.1,Theano后端):
def CreateModel(input_dim, num_hidden_layers):
from keras.models import Sequential
from keras.layers import Dense, Dropout, Convolution1D, Flatten
model = Sequential()
model.add(Convolution1D(nb_filter=10, filter_length=1, input_shape=(1, input_dim), activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.summary()
return model
def OneHotTransformation(y):
from keras.utils import np_utils
return np_utils.to_categorical(y)
X_train = X_train.values.reshape(X_train.shape[0], 1, X_train.shape[1])
X_test = X_test.values.reshape(X_test.shape[0], 1, X_test.shape[1]),
y_train = OneHotTransformation(y_train)
clf = KerasClassifier(build_fn=CreateModel, input_dim=X_train.shape[1], num_hidden_layers=1, nb_epoch=10, batch_size=500)
clf.fit(X_train, y_train)
形状:
print X_train.shape
print X_test.shape
print y_train.shape
输出:
(45561, 44)
(11391, 44)
(45561L,)
当我尝试运行此代码时,我得到和异常:
ValueError: Error when checking model target: expected dense_1 to have 3 dimensions, but got array with shape (45561L, 3L)
我试图重塑y\U列车:
y_train = y_train.reshape(y_train.shape[0], 1, y_train.shape[1])
这给了我例外:
ValueError: Error when checking model target: expected dense_1 to have 3 dimensions, but got array with shape (136683L, 2L)
我已经在这里阅读了许多github问题和一些问题(1、2),但它并没有真正起到帮助作用。
谢谢
更新1:根据马蒂亚斯·瓦尔登格罗的评论。以下是重塑“X”后和“y”一次编码后的形状:
print X_train.shape
print X_test.shape
print y_train.shape
输出:
(45561L, 1L, 44L)
(11391L, 1L, 44L)
(45561L, 3L)
更新2:再次感谢马蒂亚斯·瓦尔登格罗。X整形是在创建模型后完成的,以确保这是一个复制粘贴问题。代码应该如下所示:
def CreateModel(input_dim, num_hidden_layers):
from keras.models import Sequential
from keras.layers import Dense, Dropout, Convolution1D, Flatten
model = Sequential()
model.add(Convolution1D(nb_filter=10, filter_length=1, input_shape=(1, input_dim), activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam')
model.summary()
return model
def OneHotTransformation(y):
from keras.utils import np_utils
return np_utils.to_categorical(y)
clf = KerasClassifier(build_fn=CreateModel, input_dim=X_train.shape[1], num_hidden_layers=1, nb_epoch=10, batch_size=500)
X_train = X_train.values.reshape(X_train.shape[0], 1, X_train.shape[1])
X_test = X_test.values.reshape(X_test.shape[0], 1, X_test.shape[1]),
y_train = OneHotTransformation(y_train)
clf.fit(X_train, y_train)
一维卷积的输入应具有维度(num\u采样、通道、宽度)。因此,这意味着您需要重塑X\U列和X\U测试,而不是y\U列:
X_train = X_train.reshape(X_train.shape[0], 1, X_train.shape[1])
X_test = X_test.reshape(X_test.shape[0], 1, X_test.shape[1])
我当前的Cucumber文件如下所示: 所以现在我想再添加几个场景,可能是在同一个文件中进行API测试。所以我想为此创建一个新特性,而不是使用Feature:Test Online application页面。这样我就不需要为API测试创建单独的特性文件。
我的情况是,我希望一些对象实现一个特征,比如说“基本”,而其他一些对象将实现一个特征“超级”。Super trait还必须是< code>T : Base的泛型,这样我就可以根据它所专用的Base自动实现Super的各个部分。现在,这似乎可以很好地处理下面的小例子 我的问题与我的下一个要求有关,那就是我希望能够存储实现Super的对象向量,而不管它专门用于哪个Base。我的想法是创建一个涵盖所有超
我读过这篇文章http://www.codeproject.com/Articles/143059/Neural-Network-for-Recognition-of-Handwritten-Di当我转到这个:第0层:是MNIST数据库中手写字符的灰度图像,填充到29x29像素。输入层有29x29=841个神经元。图层#1:是一个包含六(6)个要素地图的卷积图层。从第1层到前一层有13x13x6=
我有以下简单的数据集。它由9个特征组成,是一个二元分类问题。特征向量的示例如下所示。每行都有相应的0,1标签。 我知道CNN被广泛用于图像分类,但我正试图将其应用于我手头的数据集。我正在尝试应用5个大小为2的过滤器。鉴于这些数据的形状,我一直致力于以正确的方式构建网络。这是我构建网络的功能。 最后,我还将调用一个测试函数来测试我创建的模型的准确性。下面的函数试图实现这一点 当我建立模型并通过训练函
我在Keras有卷积神经网络。我需要知道每个图层中要素地图的尺寸。我的输入是28 x 28像素的图像。我知道有一种计算方法,但我不知道如何计算。下面是我使用Keras的代码片段。 最后,这就是我想画的。非常感谢。
我正在使用卷积自动编码器。我的autoenoder配置有一个带stride(2,2)或avg pooling和relu激活的卷积层和一个带stride(2,2)或avg Unmooling和relu激活的反卷积层。 我用MNIST数据集训练自动编码器。 当我在第一个卷积层(20个过滤器,过滤器大小为3)后查看特征图时,我得到了一些黑色特征图,而学习到的过滤器不是黑色的。如果更改过滤器数量或过滤器大