减少深度神经网络的总损失
Decrease total-loss in Deep neural network
我用tflearn.DNN构建一个深度神经网络:
# Build neural network
net = tflearn.input_data(shape=[None, 5], name='input')
net = tflearn.fully_connected(net, 64, activation='sigmoid')
tflearn.batch_normalization(net)
net = tflearn.fully_connected(net, 32, activation='sigmoid')
tflearn.batch_normalization(net)
net = tflearn.fully_connected(net, 16, activation='sigmoid')
tflearn.batch_normalization(net)
net = tflearn.fully_connected(net, 8, activation='sigmoid')
tflearn.batch_normalization(net)
# activation needs to be softmax for classification.
# default loss is cross-entropy and the default metric is accuracy
# cross-entropy + accuracy = categorical network
net = tflearn.fully_connected(net, 2, activation='softmax')
sgd = tflearn.optimizers.SGD(learning_rate=0.01, lr_decay=0.96, decay_step=100)
net = tflearn.regression(net, optimizer=sgd, loss='categorical_crossentropy')
model = tflearn.DNN(net, tensorboard_verbose=0)
我尝试了很多东西,但总损失一直在这个值附近:
Training Step: 95 | total loss: 0.68445 | time: 1.436s
| SGD | epoch: 001 | loss: 0.68445 - acc: 0.5670 | val_loss: 0.68363 - val_acc: 0.5714 -- iter: 9415/9415
我该怎么做才能减少总损失并提高准确率?
可以考虑很多方面来提高网络性能,包括数据集和网络。
仅通过您粘贴的网络结构,如果没有有关数据集和您想要获得的目标的更多信息,很难给出提高其准确性的明确方法。但以下是一些有用的做法,可能会帮助您调试/改进网络:
1.关于数据集
- 数据集是否平衡失真?
- 获取更多训练数据。
- 如果可能,添加数据扩充。
- 标准化数据。
- 特征工程。
2。关于网络
- 网络规模是否太小/太大?
- 通过训练历史检查过拟合或欠拟合,然后选择最佳的 epoch 大小。
- 尝试使用不同的初始化方案初始化权重。
- 尝试不同的激活函数、损失函数、优化器。
- 更改层数和单元数。
- 更改批量大小。
- 添加丢弃层。
为了更深入地分析,以下文章可能对您有所帮助:
我用tflearn.DNN构建一个深度神经网络:
# Build neural network
net = tflearn.input_data(shape=[None, 5], name='input')
net = tflearn.fully_connected(net, 64, activation='sigmoid')
tflearn.batch_normalization(net)
net = tflearn.fully_connected(net, 32, activation='sigmoid')
tflearn.batch_normalization(net)
net = tflearn.fully_connected(net, 16, activation='sigmoid')
tflearn.batch_normalization(net)
net = tflearn.fully_connected(net, 8, activation='sigmoid')
tflearn.batch_normalization(net)
# activation needs to be softmax for classification.
# default loss is cross-entropy and the default metric is accuracy
# cross-entropy + accuracy = categorical network
net = tflearn.fully_connected(net, 2, activation='softmax')
sgd = tflearn.optimizers.SGD(learning_rate=0.01, lr_decay=0.96, decay_step=100)
net = tflearn.regression(net, optimizer=sgd, loss='categorical_crossentropy')
model = tflearn.DNN(net, tensorboard_verbose=0)
我尝试了很多东西,但总损失一直在这个值附近:
Training Step: 95 | total loss: 0.68445 | time: 1.436s
| SGD | epoch: 001 | loss: 0.68445 - acc: 0.5670 | val_loss: 0.68363 - val_acc: 0.5714 -- iter: 9415/9415
我该怎么做才能减少总损失并提高准确率?
可以考虑很多方面来提高网络性能,包括数据集和网络。 仅通过您粘贴的网络结构,如果没有有关数据集和您想要获得的目标的更多信息,很难给出提高其准确性的明确方法。但以下是一些有用的做法,可能会帮助您调试/改进网络:
1.关于数据集
- 数据集是否平衡失真?
- 获取更多训练数据。
- 如果可能,添加数据扩充。
- 标准化数据。
- 特征工程。
2。关于网络
- 网络规模是否太小/太大?
- 通过训练历史检查过拟合或欠拟合,然后选择最佳的 epoch 大小。
- 尝试使用不同的初始化方案初始化权重。
- 尝试不同的激活函数、损失函数、优化器。
- 更改层数和单元数。
- 更改批量大小。
- 添加丢弃层。
为了更深入地分析,以下文章可能对您有所帮助: