Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Machine learning Caffe中的回归:预测非常错误_Machine Learning_Neural Network_Deep Learning_Caffe_Conv Neural Network - Fatal编程技术网

Machine learning Caffe中的回归:预测非常错误

Machine learning Caffe中的回归:预测非常错误,machine-learning,neural-network,deep-learning,caffe,conv-neural-network,Machine Learning,Neural Network,Deep Learning,Caffe,Conv Neural Network,我在Caffe做了一个单标签回归问题。输入包含5个hdf5文件,我使用不同的图像独立生成了这些文件。我首先用一个hdf5文件测试了我的网络,并用大约800个训练图像(批量大小64)运行了10000次迭代。最后,当我对相同的训练图像进行预测时,我得到的结果如下: 但在测试图像上,它是: 据我所知,这是因为训练数据较少,测试数据与训练数据不太相似 因此,我尝试将训练数据增加到大约5500个图像,将它们分成5个hdf5文件。并且使用使用14000次迭代创建的模型对训练数据的预测输出为: 我不明白

我在Caffe做了一个单标签回归问题。输入包含5个hdf5文件,我使用不同的图像独立生成了这些文件。我首先用一个hdf5文件测试了我的网络,并用大约800个训练图像(批量大小64)运行了10000次迭代。最后,当我对相同的训练图像进行预测时,我得到的结果如下:

但在测试图像上,它是:

据我所知,这是因为训练数据较少,测试数据与训练数据不太相似

因此,我尝试将训练数据增加到大约5500个图像,将它们分成5个hdf5文件。并且使用使用14000次迭代创建的模型对训练数据的预测输出为:

我不明白为什么预测会更糟?caffe如何选择批次?(我的批大小是64)它是否从5个hdf5文件中随机选择一个批?我糟糕的预测背后的原因可能是什么?我能做些什么来有效地训练我的模型?我应该添加更多的卷积层吗?任何建议都会非常有助于挽救生命。这是我第一次尝试神经网络和caffe。我的网络是:

name: "Regression"
layer{
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "train_hdf5file.txt"
    batch_size: 64
    shuffle: true
  }
  include: { phase: TRAIN }
}
layer{
  name: "data"
  type: "HDF5Data"
  top: "data"
  top: "label"
  hdf5_data_param {
    source: "test_hdf5file.txt"
    batch_size: 30
  }
  include: { phase: TEST }
}
layer {
  name: "conv1"
  type: "Convolution"
  bottom: "data"
  top: "conv1"
  param { lr_mult: 1 }
  param { lr_mult: 2 }
  convolution_param {
    num_output: 20
    kernel_size: 5
    stride: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "relu1"
  type: "ReLU"
  bottom: "conv1"
  top: "conv1"
}
layer {
  name: "pool1"
  type: "Pooling"
  bottom: "conv1"
  top: "pool1"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
  }
}
layer {
  name: "dropout1"
  type: "Dropout"
  bottom: "pool1"
  top: "pool1"
  dropout_param {
    dropout_ratio: 0.1
  }
}

layer{
  name: "fc1"
  type: "InnerProduct"
  bottom: "pool1"
  top: "fc1"
  param { lr_mult: 1 decay_mult: 1 }
  param { lr_mult: 2 decay_mult: 0 }
  inner_product_param {
    num_output: 500
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "dropout2"
  type: "Dropout"
  bottom: "fc1"
  top: "fc1"
  dropout_param {
    dropout_ratio: 0.5
  }
}
layer{
  name: "fc2"
  type: "InnerProduct"
  bottom: "fc1"
  top: "fc2"
  param { lr_mult: 1 decay_mult: 1 }
  param { lr_mult: 2 decay_mult: 0 }
  inner_product_param {
    num_output: 1
    weight_filler {
      type: "xavier"
    }
    bias_filler {
      type: "constant"
      value: 0
    }
 }
}
layer{
  name: "loss"
  type: "EuclideanLoss"
  bottom: "fc2"
  bottom: "label"
  top: "loss"
}

尝试添加卷积层,并删除掉的部分(如果有过拟合问题,可以使用它)。此外,您必须检查Caffe在培训期间打印的损失;基于此,您可能还需要更改解算器文件中的学习率等。

我对caffe和网络表示不太熟悉。但我看到的唯一一种调节是从辍学层。也许可以给你的体重增加一些l1/l2调节。我希望,规范化的概念对您来说是清楚的,因为它在ML中非常重要。(如果没有任何规范化,足够强大/足够大的网络将为您提供近乎完美的训练分数,但它主要是存储数据,并且根本无法保证其他数据(如测试数据)会发生什么。)@谢谢你的回复。在我的例子中,结果不是过度拟合,对训练数据本身的预测不够好。事实上,我对我正在使用的训练数据的数量或者我的数据被使用的方式,以及网络结构是否足够好,仅仅使用一个卷积层,都有疑问。还有caffe如何处理多个hdfs文件以及如何从中选择批处理。我想知道,在增加数据之前,是应该增加同一网络上的数据量,还是应该先改善网络。