【发布时间】:2017-05-10 07:28:44
【问题描述】:
我想在 keras 中使用 Convulation1D 对数据集进行分类。
数据集描述:
训练数据集大小 = [340,30] ;样本数 = 340 ,样本维度 = 30
测试数据集大小 = [230,30] ;样本数 = 230 ,样本维度 = 30
标签大小 = 2
拳头我使用来自 keras 网站https://keras.io/layers/convolutional/ 的信息通过以下代码尝试
batch_size=1
nb_epoch = 10
sizeX=340
sizeY=30
model = Sequential()
model.add(Convolution1D(64, 3, border_mode='same', input_shape=(sizeX,sizeY)))
model.add(Convolution1D(32, 3, border_mode='same'))
model.add(Convolution1D(16, 3, border_mode='same'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
print('Train...')
model.fit(X_train_transformed, y_train, batch_size=batch_size, nb_epoch=nb_epoch,
validation_data=(X_test, y_test))
score, acc = model.evaluate(X_test_transformed, y_test, batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)
它给出了以下错误, ValueError: 检查模型输入时出错:预期的 convolution1d_input_1 有 3 个维度,但得到的数组形状为 (340, 30)
然后我使用以下代码将训练和测试数据从二维转换为 3 维,
X_train = np.reshape(X_train_transformed, (X_train_transformed.shape[0], X_train_transformed.shape[1], 1))
X_test = np.reshape(X_test_transformed, (X_test_transformed.shape[0], X_test_transformed.shape[1], 1))
然后我运行修改后的以下代码,
batch_size=1
nb_epoch = 10
sizeX=340
sizeY=30
model = Sequential()
model.add(Convolution1D(64, 3, border_mode='same', input_shape=(sizeX,sizeY)))
model.add(Convolution1D(32, 3, border_mode='same'))
model.add(Convolution1D(16, 3, border_mode='same'))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
print('Train...')
model.fit(X_train, y_train, batch_size=batch_size, nb_epoch=nb_epoch,
validation_data=(X_test, y_test))
score, acc = model.evaluate(X_test, y_test, batch_size=batch_size)
print('Test score:', score)
print('Test accuracy:', acc)
但它显示错误, ValueError:检查模型输入时出错:预期的 convolution1d_input_1 的形状为 (None, 340, 30) 但得到的数组的形状为 (340, 30, 1)
我无法在此处找到尺寸不匹配错误。
【问题讨论】:
标签: tensorflow deep-learning theano keras