我有一个神经网络,可以进行图像分割。我训练了它~100个时代。目前的影响是验证损失是恒定的(@Configuration
@EnableAutoConfiguration(exclude = { EmbeddedMongoAutoConfiguration.class })
@Profile("!testing")
public class MongoConfig extends AbstractMongoConfiguration {
@Value("${spring.data.mongodb.host}") //if it is stored in application.yml, else hard code it here
private String host;
@Value("${spring.data.mongodb.port}")
private Integer port;
@Override
protected String getDatabaseName() {
return "test";
}
@Bean
public Mongo mongo() throws Exception {
return new MongoClient(host, port);
}
@Override
public String getMappingBasePackage() {
return "com.base.package";
}
@Override
public CustomConversions customConversions() {
List<Converter<?, ?>> converters = new ArrayList<>();
converters.add(new LongToDateTimeConverter());
return new CustomConversions(converters);
}
}
@ReadingConverter
static class LongToDateTimeConverter implements Converter<Long, Date> {
@Override
public Date convert(Long source) {
if (source == null) {
return null;
}
return new Date(source);
}
}
),训练准确性仍在下降(目前为0.2 +/- 0.03
),但速度很慢。
神经网络的结果非常好。 这是什么意思?它是否过度拟合?我应该停止训练吗?
我目前在第一层使用dropout(0.07
)。将dropout添加到每一层(约有15层)是否有意义?或者我还应该添加50%
正则化?使用L2
还是droput是否有意义?
非常感谢
答案 0 :(得分:0)
建议在使用dropout时使用L2。我认为你50%的辍学率有点太高了。人们通常使用它约20%,具体取决于操作。
此外,100个时代可能还不够,这取决于训练集的大小和神经网络的大小。
你是什么意思&#34;很好&#34;?请量化它并分享一个例子。验证和准确性只是&#34;指标&#34;,它们的值也取决于NN和训练集,因此根据您的问题,0.2可能是坏的或好的。