深度学习 CNN:精度低
Deep learning CNN: low accuracy
我正在训练用于二进制时间序列分类的卷积神经网络。两种模型的训练精度非常不同。如果第一次增长,那么第二次增长总是在 40% 左右。也有强烈的“跳跃”。更改过滤器=32/64/128 并且时代没有给出最好的结果(kernel_size = 8)。
self.model = keras.Sequential([
Conv1D(64, kernel_size=self.kernel_size, activation='relu', input_shape=(self.frame_length, self.N_Feature)),
BatchNormalization(),
MaxPooling1D(),
Conv1D(128, kernel_size=self.kernel_size, activation='relu'),
BatchNormalization(),
MaxPooling1D(),
Conv1D(256, kernel_size=self.kernel_size, activation='relu'),
BatchNormalization(),
MaxPooling1D(),
Dropout(self.dropout_rate),
Flatten(),
Dense(self.N_classes, activation='sigmoid')
])
self.model.compile(optimizer='sgd',loss='binary_crossentropy',metrics='Accuracy')
some learning outcomes
我非常大胆地猜测(因为您的问题缺少很多信息),您的“self.N_classes”变量是“2”?
BinaryCrossentropy(你的损失)需要它是“1”。因此,标签不是“[0, 1]”和“[1, 0]”,而是“0”和“1”。如果您更改标签,您的损失应该有意义地计算并且您的训练应该有效。
我正在训练用于二进制时间序列分类的卷积神经网络。两种模型的训练精度非常不同。如果第一次增长,那么第二次增长总是在 40% 左右。也有强烈的“跳跃”。更改过滤器=32/64/128 并且时代没有给出最好的结果(kernel_size = 8)。
self.model = keras.Sequential([
Conv1D(64, kernel_size=self.kernel_size, activation='relu', input_shape=(self.frame_length, self.N_Feature)),
BatchNormalization(),
MaxPooling1D(),
Conv1D(128, kernel_size=self.kernel_size, activation='relu'),
BatchNormalization(),
MaxPooling1D(),
Conv1D(256, kernel_size=self.kernel_size, activation='relu'),
BatchNormalization(),
MaxPooling1D(),
Dropout(self.dropout_rate),
Flatten(),
Dense(self.N_classes, activation='sigmoid')
])
self.model.compile(optimizer='sgd',loss='binary_crossentropy',metrics='Accuracy')
some learning outcomes
我非常大胆地猜测(因为您的问题缺少很多信息),您的“self.N_classes”变量是“2”?
BinaryCrossentropy(你的损失)需要它是“1”。因此,标签不是“[0, 1]”和“[1, 0]”,而是“0”和“1”。如果您更改标签,您的损失应该有意义地计算并且您的训练应该有效。