我有以下型号
model = models.Sequential()
model.add(layers.Conv1D(filters=unitsNumber, kernel_size=3, activation='relu', input_shape=(61,1)))
model.add(layers.ZeroPadding1D(padding=1))
model.add(layers.Conv1D(filters=unitsNumber, kernel_size=3, activation='relu'))
model.add(layers.MaxPooling1D(pool_size=2))
model.add(layers.Flatten()) # now output shape == (None, 1160)
model.add(layers.Dense(unitsNumber, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid')) #sortie binaire
model.summary()
这给了我这个总结
Model: "sequential_8"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv1d_15 (Conv1D) (None, 59, 40) 160
_________________________________________________________________
zero_padding1d_8 (ZeroPaddin (None, 61, 40) 0
_________________________________________________________________
conv1d_16 (Conv1D) (None, 59, 40) 4840
_________________________________________________________________
max_pooling1d_8 (MaxPooling1 (None, 29, 40) 0
_________________________________________________________________
flatten_8 (Flatten) (None, 1160) 0
_________________________________________________________________
dense_15 (Dense) (None, 40) 46440
_________________________________________________________________
dense_16 (Dense) (None, 1) 41
=================================================================
Total params: 51,481
Trainable params: 51,481
Non-trainable params: 0
我用这个分类器
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])
我给我的准确度是87%,目标变量是两组之一。
但是,我想更改数据集并创建更多具有相同数据的组,而不仅仅是两个。
因此,与其尝试预测1或0的输出,还不如说输出的值可以是0到8之间的任意一个数值(共9组)。
我确实计划更改组的数量,以便在准确性与组大小之间进行权衡,因为组的数量越多,分类就越困难。
我尝试了以下分类器
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc']) model.compile(optimizer='sgd',loss='binary_crossentropy',metrics=['acc']) model.compile(optimizer='Nadam',loss='binary_crossentropy',metrics=['acc'])
但是出现以下错误:
UnknownError: Failed to get convolution algorithm. This is probably because cuDNN failed to initialize, so try looking to see if a warning log message was printed above.
[[{{node conv1d_7/convolution/Conv2D}}]]
[[{{node metrics_3/acc/Mean_1}}]]
我不确定问题出在哪里,但是我相信我可能在多分类问题上使用了错误类型的模型。如果有人能指出我正确的方向,将不胜感激。 谢谢
更新:显示如何处理数据:
# Initial Format
X_train.shape
# Shape data for CNN
X_train_values = X_train.values
y_train_values = y_train.values
X_train_values =
X_train_values.reshape
((X_train_values.shape[0],X_train_values.shape[1],1))
X_train_values.shape
X_test_values = X_test.values
y_test_values = y_test.values
X_test_values =
X_test_values.reshape((X_test_values.shape[0],X_test_values.shape[1],1))
unitsNumber = 40
答案 0 :(得分:2)
您应将最终层激活功能更改为“ softmax”。 最后一层中的节点数应等于您要预测的类数。 (您的情况为9)。
model.add(layers.Dense(9, activation='softmax'))
损失函数应为'categorical_crossentroy'
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc'])
答案 1 :(得分:1)
onUpload(event) {
for (let file of event.files) {
console.log(file);
this.uploadedFiles.push(file);
console.log(this.uploadedFiles);
}
}
激活sigmoid
激活softmax
categorical_crossentropy
sparse_categorical_crossentropy
答案 2 :(得分:0)