【问题标题】:Neural Networks parameters are stable神经网络参数稳定
【发布时间】:2020-02-21 18:05:46
【问题描述】:

我正在尝试音频分类。

我的代码 -

x_train = (800, 32, 1)
x_test = (200, 32, 1)
y_train = (800, 1)
y_test = (200, 1)

model = Sequential()

model.add(Conv1D(filters=64, kernel_size=20, padding='same', input_shape=(32,1), activation="relu"))
model.add(MaxPooling1D(3))

model.add(Conv1D(filters=64, kernel_size=15, padding='same',  activation="relu"))
model.add(MaxPooling1D(2))

model.add(Conv1D(filters=96, kernel_size=10, padding='same',  activation="relu"))

model.add(Flatten())
model.add(Dense(128, activation="relu"))
model.add(Dropout(0.5))
model.add(Dense(96, activation="relu"))
model.add(Dense(10, activation="softmax"))

model.compile(
    loss ='sparse_categorical_crossentropy',
    optimizer = Adam(lr=0.01),
    metrics = ['accuracy']
)
model.summary()

red_lr= ReduceLROnPlateau(monitor='val_loss', patience=3, verbose=1, factor=0.001, mode='min')
check=ModelCheckpoint(filepath=r'/content/drive/My Drive/Colab Notebooks/genre/cnn.hdf5', verbose=1,save_best_only = True)

History = model.fit(x_train,y_train, epochs=30,batch_size=128,validation_data = (x_test, y_test),verbose = 2, callbacks=[check, red_lr,],shuffle=True )

我从 1 层开始,并增加了层以提高准确性 我拥有的最好的模型有这些值 - (loss: 0.5385 - acc: 0.8275 - val_loss: 0.8758 - val_acc: 0.7400)

我跑了 4 到 5 次,在 val_acc 和 val_loss 中都有相同的模式 这两个参数逐渐增加,在执行了一半的 epoch 后,它会在其余的 epoch 中变得稳定......就像这样,

任何提高准确性的建议,以及为什么损失在一半的时期内没有变化

【问题讨论】:

    标签: python tensorflow keras conv-neural-network


    【解决方案1】:

    有两种可能的答案。您的模型已经处于局部最小值或超过局部最小值。你可以做些什么来测试它是在你的优化器函数中设置一个较低的学习率:

    optimizer = Adam(lr=0.001) # change it to 0.001 or even lower
    

    【讨论】:

    • 我检查了大多数优化器并降低了学习率,但仍然没有提高准确性......
    猜你喜欢
    • 2015-05-10
    • 2018-03-23
    • 2020-12-21
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 2020-09-29
    • 2013-07-01
    • 2020-08-21
    相关资源
    最近更新 更多