您现在的位置是:主页 > news > 我的世界做外国壁纸网站/长沙疫情最新情况
我的世界做外国壁纸网站/长沙疫情最新情况
admin2025/6/5 3:42:56【news】
简介我的世界做外国壁纸网站,长沙疫情最新情况,怎么找上海网站建,谷歌广告投放步骤CNN目前活跃在图像分类领域,人们尝试直接把原始图像作为输入,通过深度学习得到分类结果,按照这个思路,人们开始了浩浩荡荡的深度学习。 在使用过程中,人们发现,由于全连接带来的巨大计算量,是研…
CNN目前活跃在图像分类领域,人们尝试直接把原始图像作为输入,通过深度学习得到分类结果,按照这个思路,人们开始了浩浩荡荡的深度学习。
在使用过程中,人们发现,由于全连接带来的巨大计算量,是研究者和项目本身无法承受的,而在实际生活中,我们去辨别图像的时候,更多的是利用局部连接,我们的探索也是一块一块的去落实。
局部连接的出现让计算量下了几个数量级,但是依然十分巨大,因为局部连接只是减少了节点与下一层节点的连接数,隐藏层的节点数量并未发生任何改变。这时候,使用卷积核开始逐步运算,进行移动步长大于1的操作,则可缩小原始图像。
卷积集就是两个卷积核大小的矩阵的内积运算,不是矩阵乘法。即相同位置的数字相乘再相加求和。事实上卷积和的公式很多,我们只是把问题的计算变得更加简单了一点。通过后面的代码我们可以学习到,卷积核的大小和个数都是自己定义的,但一般越靠近输入层的卷积层设定越少的卷积核,随着不断的计算,卷积层设定的卷积核数目越来越多。
对于卷积和的有效性,在卷积之后,我们不断得到越来越多的水平和垂直的特征,一点点的将特征提取出来。
需要提到一句,如果出现了边际数据缺失,可以使用same模式使用0补全。可以有效防止图片变得越来越小,通常情况下,我们希望图片做完卷积操作后保持图片大小不变,所以我们一般会选择尺寸为3*3的卷积核和1的zero padding,或者5*5的卷积核与2的zero padding,这样通过计算后,可以保留图片的原始尺寸。那么加入zero padding后的feature_map尺寸 =( width + 2 * padding_size - filter_size )/stride + 1。
池化操作就是对不同位置的特征进行聚合统计,如计算某一区域的平均值或者最大值,这样可以显著缩减隐藏层的节点个数。池化层的主要目的是通过降采样的方式进行压缩,减少参数。
典型的CNN结构:
在CNN的使用中,确实就是不断的进行卷积处理和张量处理,最后变成一维的数量符合项目任务的情况。
这里学习一下卷积神经网络的反向传播。反向传播,需要下一层对前一层不断的求偏导,求出每一层的误差敏感项,然后求出权重和偏置项的梯度。卷积神经网络有两个特殊的层:卷积层和池化层,池化层输出时是滑动窗口的最大值,偏导为1。池化层和卷积层反向传播的方式:
(http://www.cnblogs.com/charlotte77/p/7783261.html)
池化层的反向传播:
import tflearn
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.estimator import regression# Data loading and preprocessing
import tflearn.datasets.mnist as mnistimport tflearn.datasets.oxflower17 as oxflower17#将28*28变为1*10
def cnn():X, Y, testX, testY = mnist.load_data(one_hot=True)X = X.reshape([-1, 28, 28, 1])testX = testX.reshape([-1, 28, 28, 1])# Building convolutional networknetwork = input_data(shape=[None, 28, 28, 1], name='input')network = conv_2d(network, 32, 3, activation='relu', regularizer="L2")network = max_pool_2d(network, 2)network = local_response_normalization(network)network = conv_2d(network, 64, 3, activation='relu', regularizer="L2")network = max_pool_2d(network, 2)#标准化处理张量,与节点数为128的隐藏层进行全连接,为防止过拟合使用Dropout让部分节点临时失效network = local_response_normalization(network) network = fully_connected(network, 128, activation='tanh')network = dropout(network, 0.8)#与节点数为256的隐藏层进行全连接,为防止过拟合使用Dropout让部分节点临时失效network = fully_connected(network, 256, activation='tanh')network = dropout(network, 0.8)
#最后与10节点的隐藏层进行全连接,获得长度为100的一维张量network = fully_connected(network, 10, activation='softmax')network = regression(network, optimizer='adam', learning_rate=0.01,loss='categorical_crossentropy', name='target')# Trainingmodel = tflearn.DNN(network, tensorboard_verbose=0)model.fit({'input': X}, {'target': Y}, n_epoch=20,validation_set=({'input': testX}, {'target': testY}),snapshot_step=100, show_metric=True, run_id='cnn_demo')#目标是将227*227*3的张量化为长度为17的一维张量
def alexnet():X, Y = oxflower17.load_data(one_hot=True, resize_pics=(227, 227))# Building 'AlexNet'network = input_data(shape=[None, 227, 227, 3])network = conv_2d(network, 96, 11, strides=4, activation='relu')network = max_pool_2d(network, 3, strides=2)network = local_response_normalization(network)network = conv_2d(network, 256, 5, activation='relu')network = max_pool_2d(network, 3, strides=2)network = local_response_normalization(network)network = conv_2d(network, 384, 3, activation='relu')network = conv_2d(network, 384, 3, activation='relu')network = conv_2d(network, 256, 3, activation='relu')network = max_pool_2d(network, 3, strides=2)network = local_response_normalization(network)network = fully_connected(network, 4096, activation='tanh')network = dropout(network, 0.5)network = fully_connected(network, 4096, activation='tanh')network = dropout(network, 0.5)network = fully_connected(network, 17, activation='softmax')network = regression(network, optimizer='momentum',loss='categorical_crossentropy',learning_rate=0.001)# Trainingmodel = tflearn.DNN(network, checkpoint_path='model_alexnet',max_checkpoints=1, tensorboard_verbose=2)model.fit(X, Y, n_epoch=1000, validation_set=0.1, shuffle=True,show_metric=True, batch_size=64, snapshot_step=200,snapshot_epoch=False, run_id='alexnet')#alexnet()def vggnet():X, Y = oxflower17.load_data(one_hot=True,resize_pics=(227, 227))# Building 'VGG Network'network = input_data(shape=[None, 227, 227, 3])network = conv_2d(network, 64, 3, activation='relu')network = conv_2d(network, 64, 3, activation='relu')network = max_pool_2d(network, 2, strides=2)network = conv_2d(network, 128, 3, activation='relu')network = conv_2d(network, 128, 3, activation='relu')network = max_pool_2d(network, 2, strides=2)network = conv_2d(network, 256, 3, activation='relu')network = conv_2d(network, 256, 3, activation='relu')network = conv_2d(network, 256, 3, activation='relu')network = max_pool_2d(network, 2, strides=2)network = conv_2d(network, 512, 3, activation='relu')network = conv_2d(network, 512, 3, activation='relu')network = conv_2d(network, 512, 3, activation='relu')network = max_pool_2d(network, 2, strides=2)network = conv_2d(network, 512, 3, activation='relu')network = conv_2d(network, 512, 3, activation='relu')network = conv_2d(network, 512, 3, activation='relu')network = max_pool_2d(network, 2, strides=2)network = fully_connected(network, 4096, activation='relu')network = dropout(network, 0.5)network = fully_connected(network, 4096, activation='relu')network = dropout(network, 0.5)network = fully_connected(network, 17, activation='softmax')network = regression(network, optimizer='rmsprop',loss='categorical_crossentropy',learning_rate=0.0001)# Trainingmodel = tflearn.DNN(network, checkpoint_path='model_vgg',max_checkpoints=1, tensorboard_verbose=0)model.fit(X, Y, n_epoch=500, shuffle=True,show_metric=True, batch_size=32, snapshot_step=500,snapshot_epoch=False, run_id='vgg')vggnet()
在跟随《Web安全之深度学习实战》的学习中,我们知道CNN在文本处理中一样足够优秀,使用一维的卷积函数处理文字片段,提炼高级特征进一步进行分析:
#使用卷积处理,卷积核长度为3,卷积核数量为128,即长度为3的卷积操作,提取128种特征
branch1 = conv_1d(network, 128, 3, padding='valid', activation='relu', regularizer="L2")
#使用卷积处理,卷积核长度为4,卷积核数量为128,即长度为4的卷积操作,提取128种特征
branch1 = conv_1d(network, 128, 4, padding='valid', activation='relu', regularizer="L2")
#使用卷积处理,卷积核长度为5,卷积核数量为128,即长度为5的卷积操作,提取128种特征
branch1 = conv_1d(network, 128, 5, padding='valid', activation='relu', regularizer="L2")
#合并以上三次处理结果,使用一个全连接处理,输出结果为一个节点为2的输出层
network = merge([branch1, branch2, branch3], mode='concat', axis=1)
network = tf.expand_dims(network, 2)
network = global_max_pool(network)
network = dropout(network, 0.8)
network = fully_connected(network, 2, activation='softmax')
network = regression(network, optimizer='adam', learning_rate=0.001,loss='categorical_crossentropy', name='target')
感谢作者的笔墨,我可以得到在此处的提升~