永利棋牌官方下载-www.55402.com-永利国际唯一指定官网

永利棋牌官方下载提供最新最好玩的真人游戏,www.55402.com是澳门国际娱乐平台官方网站唯一授权会员登录手机版,www.316net,www.366net,516.net,626.net,766.net,www.565.net,www.16.net,bwin62.com,bwin180.com,永利国际唯一指定官网为新老顾客提供更多的精彩娱乐项目,,所有的玩家都可以得到注册送体验金的巨大福利是设身处地为玩家量身订造的经典网站。

学习笔记TF029:实现进阶卷积网络

用cifar10_input.inputs函数生成测量检验数据,裁剪图片正中间24x24大小区块,数据标准。

练习。每一个step演习进程,session run方法试行images_train、 labels_train总括,得到batch练习多少,传入train_学习笔记TF029:实现进阶卷积网络。op和loss总括。记录各个step时间,每间隔12个step总结显示当前loss、每分钟锻炼样品数量、演练batch数据时间,监察和控制全数操练进度。GTX 1080,每秒锻练1800个样板,batch_size 128,各类batch 0.066s。损失loss,初步4.6,3000步练习下减低到1.0。

测算CNN loss。softmax总括和cross entropy loss 总括合在联合签字,tf.nn.sparse_softmax_cross_entropy_with_logits。tf.reduce_mean计算cross entropy均值,tf.add_to_学习笔记TF029:实现进阶卷积网络。collection 添加cross entropy loss 到整体losses collection。tf.add_n全体losses collection 全体loss求和,得最后loss,饱含cross entropy loss,和后七个一而再层weight L2 loss。Logits节点、label_placeholder传入loss小孩子数,获得最后loss。

多少增进(Data Augmentation),给单幅图扩大七个别本,提升图片利用率,制止图片结构学习过拟合。利用图片自身质量,图片冗余消息量超级大,创制分裂噪声,依可甄别。神经网络击败噪声正确识别,泛化性更加好。深度学习只要提供丰裕多种本,正确率能够不断提高。 规模越大越复杂神经互联网模型,能够达成准确率水平越高,供给更加的多多少训练。亚历克斯cuda-convnet测验结果,CIFA锐界-10,不数据拉长,错误最低下跌低到17%,数据增加,错误率下落至11%。

下载TensorFlow Models库,使用当中提供CIFA卡宴-10数据类。git clone

全连接层,把前面三个卷积层输出结果一切flatten,tf.reshape函数把各样样品形成黄金年代维向量。get_shape函数获取数据扁平化长度。variable_学习笔记TF029:实现进阶卷积网络。with_weight_loss函数开首化全连接层weight,隐含节点384,正态布满标准差0.04,bias伊始化0.1。设非零weight loss值0.04,全体参数被L2正则约束,制止过拟合。ReLU激活函数非线性化。

73%精确率。持续加码max_steps,期待准确率逐步加多。max_steps相当的大,用学习速率衰减(decay)的SGD练习,临近86%。L2正则,L奥迪Q7N层提高模型正确率,升高框泛化性。

起步图片数据增加线程队列,17个线程加快。

tf.nn.in_top_k函数求输出结果top k准确率,暗许top 1,输出分类最高类正确率。

tf.InteractiveSession成立暗中认可session ,起先化整人体模型子参数。

特出数据集CIFATiggo-10,60000张32x32彩图,操练集50000张,测验集10000张。标明10类,每类图片6000张。airplance、automobile、bird、cat、deer、dog、frog、horse、ship、truck。未有其他重叠。CIFA本田UR-V-100,100类标记。深度学习之父 Geoffrey Hinton和学子亚历克斯 Krizhevsky、Vinod Nair采摘。图片来自80 million tiny images数据集。State-of-the-art 3.5%错误率,GPU练习十几钟头。详细Benchmark和排名在 。LeCun,现成卷积神经网络已经减轻CIFALacrosse-10数据集难题。

先是个卷积层,variable_with_weight_loss 函数创造卷积核参数最早化。卷积核大小5x5,3个颜色通道,六拾三个卷积核,设置weight起先化函数标准差0.05。wl(weight loss)设0。tf.nn.conv2d函数对输入数据image_holder卷积操作,步长stride设1,padding形式SAME,bias开首化0,卷积结果加bias,用ReLU激活函数非线化。用尺寸3x3,步长2x2最大池化层管理数量,尺寸、步长不等同,增增添少丰硕性。tf.nn.lrn函数,LQashqaiN,管理结果。

评测模型测验集正确率。测量检验集10000个样板,使用固定batch_size,每一种batch输入测量试验数据。总计全部样书评测完batch数量。各个step用session run方法获得images_test、labels_test的batch,执行top_k_op总括模型 batch top 1预测准确样板数。汇总全数预测精确结果,求万事测验样品预测正确数量。

    import cifar10,cifar10_input
    import tensorflow as tf
    import numpy as np
    import time
    max_steps = 3000
    batch_size = 128
    data_dir = '/tmp/cifar10_data/cifar-10-batches-bin'
    def variable_with_weight_loss(shape, stddev, wl):
        var = tf.Variable(tf.truncated_normal(shape, stddev=stddev))
        if wl is not None:
            weight_loss = tf.multiply(tf.nn.l2_loss(var), wl, name='weight_loss')
            tf.add_to_collection('losses', weight_loss)
        return var
    def loss(logits, labels):
        labels = tf.cast(labels, tf.int64)
        cross_entropy = tf.nn.sparse_softmax_cross_entropy_with_logits(
            logits=logits, labels=labels, name='cross_entropy_per_example')
        cross_entropy_mean = tf.reduce_mean(cross_entropy, name='cross_entropy')
        tf.add_to_collection('losses', cross_entropy_mean)
        return tf.add_n(tf.get_collection('losses'), name='total_loss')

    ###
    cifar10.maybe_download_and_extract()
    images_train, labels_train = cifar10_input.distorted_inputs(data_dir=data_dir,
                                                            batch_size=batch_size)
    images_test, labels_test = cifar10_input.inputs(eval_data=True,
                                                data_dir=data_dir,
                                                batch_size=batch_size)                                                  
    #images_train, labels_train = cifar10.distorted_inputs()
    #images_test, labels_test = cifar10.inputs(eval_data=True)
    image_holder = tf.placeholder(tf.float32, [batch_size, 24, 24, 3])
    label_holder = tf.placeholder(tf.int32, [batch_size])
    #logits = inference(image_holder)
    weight1 = variable_with_weight_loss(shape=[5, 5, 3, 64], stddev=5e-2, wl=0.0)
    kernel1 = tf.nn.conv2d(image_holder, weight1, [1, 1, 1, 1], padding='SAME')
    bias1 = tf.Variable(tf.constant(0.0, shape=[64]))
    conv1 = tf.nn.relu(tf.nn.bias_add(kernel1, bias1))
    pool1 = tf.nn.max_pool(conv1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1],
                       padding='SAME')
    norm1 = tf.nn.lrn(pool1, 4, bias=1.0, alpha=0.001 / 9.0, beta=0.75)
    weight2 = variable_with_weight_loss(shape=[5, 5, 64, 64], stddev=5e-2, wl=0.0)
    kernel2 = tf.nn.conv2d(norm1, weight2, [1, 1, 1, 1], padding='SAME')
    bias2 = tf.Variable(tf.constant(0.1, shape=[64]))
    conv2 = tf.nn.relu(tf.nn.bias_add(kernel2, bias2))
    norm2 = tf.nn.lrn(conv2, 4, bias=1.0, alpha=0.001 / 9.0, beta=0.75)
    pool2 = tf.nn.max_pool(norm2, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1],
                       padding='SAME')
    reshape = tf.reshape(pool2, [batch_size, -1])
    dim = reshape.get_shape()[1].value
    weight3 = variable_with_weight_loss(shape=[dim, 384], stddev=0.04, wl=0.004)
    bias3 = tf.Variable(tf.constant(0.1, shape=[384]))
    local3 = tf.nn.relu(tf.matmul(reshape, weight3) + bias3)
    weight4 = variable_with_weight_loss(shape=[384, 192], stddev=0.04, wl=0.004)
    bias4 = tf.Variable(tf.constant(0.1, shape=[192]))                                      
    local4 = tf.nn.relu(tf.matmul(local3, weight4) + bias4)
    weight5 = variable_with_weight_loss(shape=[192, 10], stddev=1/192.0, wl=0.0)
    bias5 = tf.Variable(tf.constant(0.0, shape=[10]))
    logits = tf.add(tf.matmul(local4, weight5), bias5)
    loss = loss(logits, label_holder)
    train_op = tf.train.AdamOptimizer(1e-3).minimize(loss) #0.72
    top_k_op = tf.nn.in_top_k(logits, label_holder, 1)
    sess = tf.InteractiveSession()
    tf.global_variables_initializer().run()
    tf.train.start_queue_runners()
    ###
    for step in range(max_steps):
        start_time = time.time()
        image_batch,label_batch = sess.run([images_train,labels_train])
        _, loss_value = sess.run([train_op, loss],feed_dict={image_holder: image_batch, 
                                                         label_holder:label_batch})
        duration = time.time() - start_time
        if step % 10 == 0:
            examples_per_sec = batch_size / duration
            sec_per_batch = float(duration)

            format_str = ('step %d, loss = %.2f (%.1f examples/sec; %.3f sec/batch)')
            print(format_str % (step, loss_value, examples_per_sec, sec_per_batch))

    ###
    num_examples = 10000
    import math
    num_iter = int(math.ceil(num_examples / batch_size))
    true_count = 0  
    total_sample_count = num_iter * batch_size
    step = 0
    while step < num_iter:
        image_batch,label_batch = sess.run([images_test,labels_test])
        predictions = sess.run([top_k_op],feed_dict={image_holder: image_batch,
                                                 label_holder:label_batch})
        true_count += np.sum(predictions)
        step += 1
    precision = true_count / total_sample_count
    print('precision @ 1 = %.3f' % precision)

用cifar10_input类 distorted_inputs函数产生锻练多少,包涵特征、label,重返封装tensor,每一次履行生成七个batch_size数量样品。Data Augmentation(数据增加),cifar10_input.distorted_inputs函数,随机水平翻转(tf.image.random_flip_left_right)、随机剪切一块24x24图纸(tf.random_crop)、设置随机亮度相比度(tf.image.random_brightness、tf.image.random_contrast),数据规范(tf.image.per_image_whitening,数据减均值,除方差,保证数据零均值,方差1)。获得更加多种本,带噪声,一张图纸样品变多张图纸,扩展样品量,提升正确率。数据拉长操作消耗大量CPU时间,distored_inputs用拾六个单身线程加速任务,函数内部产生线程池,通过TensorFlow queue调解。

其次个卷积层,卷积核尺寸第三维度输入通道数64,bias值全开端化0.1。先进行LPorsche718N层处理,再用最大池化层。

概念发轫化weight函数,tf.truncated_normal截断正态布满初始化权重。Weight加L2 loss ,做L2 正则化。收缩特征或处置不首要特色权重,缓和特征过多导致过拟合。正则化辅助找到该处以的特征权重。为利用有个别特征,需付出loss代价。L1正则创设抛荒特征,大部分无用特征权重被置0。L2正则让特征权重可是大,特征权重较平均。wl调整L2 loss大小,tf.nn.l2_loss函数计算weight L2 loss,tf.multiply L2 loss 乘以wl,得最终 weight loss。tf.add_to_collection weight loss统风流倜傥存在collection losses,总结神经网络总体loss使用。

其次个全连接层,隐含节点192。

载入常用库,NumPy、time,TensorFlow Models自动下载、读取CIFAOdyssey-10数据类。

仿照效法资料:
《TensorFlow实战》

 

定义batch_size,训练轮数max_steps,下载CIFA牧马人-10数据暗中同意路线。

LWranglerN起于Alex用CNN参预ImageNet竞技诗歌。L福特ExplorerN模仿生物神经系统侧禁绝机制,对部分神经元活动创设竞争条件,响应不小值变得相对更加大,禁止别的报告异常的小神经元,加强模型泛化工夫。用LWranglerN后CNN Top1错误率收缩1.4%。LOdysseyN对无上限边界激活函数ReLU有用,从左近多少个卷积核响应(Response)筛选超级大报告,不符合固定边界能平抑过大值激活函数Sigmoid。

优化器选用Adam Optimizer,学习速率1e-3。

全体卷积神经网络从输入到输出流程。设计CNN,布置卷积层、池化层、全连接层分布和各样,超参数设置、Trick使用。卷积神经互联网布局:
conv1:卷积层和ReLU激活函数
pool1:最大池化
norm1:LRN
conv2:卷积层和ReLU激活函数
norm2:LRN
pool2:最大池化
local3:全连接层和ReLU激活函数
local4:全连接层和ReLU激活函数
logits:模型Inference输出结果

据说亚历克斯 cuda-convnet模型匡正,3000个batch,每一个batch 127个样板,达到73%正确率。GTX1080单显卡几十秒模型锻炼时间。CPU慢相当多。如用100k batch 结合学习进度decay(每隔大器晚成段时间下落学习速率二个比率),正确率可到86%。模型锻炼参数100万个,预测四则运算总的数量二〇〇二万次。对weights举行L2正则化。图片翻转、随机剪切等数据拉长,创建越多种本。每一种卷积-最大池化层后用L奇骏N层,加强模型泛化工夫。

创设输入数据placeholderx,特征、label。设定placeholder数据尺寸,batch_size定义网络布局要用,数据尺寸第2个值样板条数供给事先设定,不可能设None。数据尺寸的图片尺寸为24x24,裁剪后大小,颜色通道数3,彩色MuranoGB三通道。

用cifar10类下载数据集,解压、张开到暗中同意地方。

打字与印刷正确率评测结果总计。

款待付费咨询(150元每时辰),笔者的微信:qingxingfengzi

终极生龙活虎层,先成立weight,正态遍及标准差设上后生可畏隐含层节点数尾数,不计入L2正则。Softmax操作放在总结loss部分,无需对inference输出softmax管理,就足以赢得最终分类,间接比较inference输出各样数值大小。

本文由永利棋牌官方下载发布于永利棋牌官方下载,转载请注明出处:学习笔记TF029:实现进阶卷积网络

您可能还会对下面的文章感兴趣: