美文网首页
无标题文章

无标题文章

作者: CC是个特困群众 | 来源:发表于2019-04-08 18:20 被阅读0次

1.震荡:batchsize设置过小,建议适当增大

增大batch_size内存利用率以及速度都会提高,但是batchsize过大可能导致内存溢出

  2.val_loss逐渐增大,极大可能为过拟合,可以进行如下操作:

增大数据集

很多时候出现过拟合现象是因为数据集过小而引起的,所以当数据量较小时,增大数据集是最简单粗暴的方法,可以尝试keras

的ImageDataGenerator,在keras中文文档中解释为:用以生成一个batch的图像数据,支持实时数据提升。训练时该函数会无限生成数据,直到达到规定的epoch次数为止。

train_datagen = ImageDataGenerator(

rescale=1./255,

rotation_range=40,

width_shift_range=0.2,

height_shift_range=0.2,

shear_range=0.2,

zoom_range=0.2,

horizontal_flip=True,

fill_mode='nearest')

或者直接批量生成扩充数据集:

importscipy

fromscipyimportmisc

importos

importtime

importglob

fromscipyimportndimage

defget_image_paths(folder):

returnglob.glob(os.path.join(folder,'*.png'))

defcreate_read_img(filename):

    im = misc.imread(filename)

img_rote_90 = ndimage.rotate(im,90)

scipy.misc.imsave(filename[:-4]+'_90.png',img_rote_90)

img_rote_180 = ndimage.rotate(im,180)

scipy.misc.imsave(filename[:-4]+'_180.png',img_rote_180)

img_rote_270 = ndimage.rotate(im,270)

scipy.misc.imsave(filename[:-4]+'_270.png',img_rote_270)

img_path ='./data_aug/train/M/'

imgs = get_image_paths(img_path)

#print (imgs)

foriinimgs:

    create_read_img(i)

dropout适量增大

drop最简单的理解为:训练过程中向前传播时,将神经网络某一层的输出节点数据以P的概率随机丢弃一部分,可以理解为随机把一张图片50%的点删除。tensorflow通过一个placehold传入keep_prob比率来控制。

x=tf.placeholder(tf,float32,[None,in_units])

keep_prob=tf.placeholder(tf.float32)

在keras中:

model.add(layers.Dropout(0.5))#根据情况设置dropout

增加BN层

(1)可以选用较大学习率,加快收敛速度

(2)使用BN层可以省略掉dropout以及L2

(3)去掉LRN

(4)打乱训练数据

keras.layers.normalization.BatchNormalization(epsilon=1e-06, mode=0, axis=-1,

momentum=0.9, weights=None,

beta_init='zero',

gamma_init='one')

在keras中文文档中: 任意,当使用本层为模型首层时,指定input_shape参数时有意义。

其中mode:为0时是特征规范化,为1时是样本规范化。如果输入是形如(samples,channels,rows,cols)的4D图像张量,则应设置规范化的轴为1,即沿着通道轴规范化。

增加噪声

在输入,权值以及网络响应上添加噪声

增加earlystop

因为我们在初始化网络的时候一般都是初始为较小的权值。训练时间越长,部分网络权值可能越大。如果我们在合适时间停止训练,就可以将网络的能力限制在一定范围内。训练时间长可能会错过最佳点。

earlyStopping=kcallbacks.EarlyStopping(monitor='val_loss', patience=10,

verbose=1,mode='auto')

history = model.fit(callbacks=earlyStopping)

增加L2正则化

model.add(Dense(1, activation='sigmoid',

kernel_regularizer=regularizers.l2(0.01),

activity_regularizer=regularizers.l1(0.001)))

相关文章

  • 无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章 无标题文章无标题文章无标题文章无...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • fasfsdfdf

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标...

  • 无标题文章

    无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章无标题文章

  • 无标题文章

    无标题文章 无标题文章 无标题文章无标题文章 无标题文章 无标题文章

网友评论

      本文标题:无标题文章

      本文链接:https://www.haomeiwen.com/subject/cpkrwftx.html