1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 深度学习13-cnn介绍(卷积神经网络简介)

深度学习13-cnn介绍(卷积神经网络简介)

时间:2024-05-14 00:03:38

相关推荐

深度学习13-cnn介绍(卷积神经网络简介)

文章目录

N解决了什么问题?N基本原理1)卷积层2)tf自带的2D卷积层3)动手实现卷积层Numpy版本tf2.0版本4)池化层5)动手实现池化层tf自带的MaxPool2DNumpy版本池化层tf版本池化层6)全连接层3.常用CNN架构N有哪些实际应用5.总结

N解决了什么问题?

N基本原理

1)卷积层

卷积层的前向传播以及计算公式

图片:7*7*3通道:3个输入通道卷积核

输出通道高度:(5 - 3 + 2) / 2 + 1 = 3输出通道宽度:(5 - 3 + 2 ) / 2 + 1 = 3

2)tf自带的2D卷积层

3)动手实现卷积层

Numpy版本

import numpy as npdef conv_numpy(x,w,b,pad,strides):# x表示输入张量,w表示卷积核,b表示偏置,pad表示填充,strides表示步长out = None N,H.W,C = x.shapeF,HH,WW,C = w.shapeX = np.pad(x,((0,0),(pad,pad),(pad,pad),(0,0)),'constant')# 计算输出张量的高度与宽度Hn = 1 + int((H + 2 * pad - HH) / strides[0])Wn = 1 + int((W + 2 * pad - WW) / strides[1])out = np.zeros((N,Hn,Wn,F))for n in range(N):for m in range(F):for i in range(Hn):for j in range(Wn):data = X[n,i * strides[0] : i * strides[0] + HH,j * strides[1] : j * strides[1] + WW, :].reshape(1,-1) # 行filt = w[m].reshape(-1,1)# 列out[n,i,j,m] = data.dot(filt) + b(m)return out

tf2.0版本

def corr2d(x,w,b,pad,strides):# x表示输入张量,w表示卷积核,b表示偏置,pad表示填充,strides表示步长out = None N,H.W,C = tf.shape(x)F,HH,WW,C = tf.shape(w)X = tf.pad(x,((0,0),(pad,pad),(pad,pad),(0,0)),'constant')# 计算输出张量的高度与宽度Hn = 1 + int((H + 2 * pad - HH) / strides[0])Wn = 1 + int((W + 2 * pad - WW) / strides[1])Y = tf.Variable(tf.zeros((N,Hn,Wn,F),dtype = tf.float32))for m in range(F):for i in range(Hn):for j in range(Wn):data = X[:,i * strides[0] : i * 1 + HH,j * strides[1] : j * 1 + WW, :]filt = w[m,:,:,:]Y[:,i,j,m].assign(tf.reducr_sum(tf.multiply(data,filt),axis=(1,2,3)) + b[m])return Y

4)池化层

5)动手实现池化层

tf自带的MaxPool2D

Numpy版本池化层

def max_pool_forward_native(x,pool_size=(2,2),strides=(1,1)):N,H,W,C = x.shapeh_p,w_p = pool_sizeh_s,w_s = stridesHn = 1 + int((H - h_p) / h_s)Wn = 1 + ins((W - w_p) / w_s)out = np.zeros((N,Hn,Wn,C))for i in range(Hn):for j in range(Wn):out[:,i,j,:] = np.max(x[:.i*h_s : i*h_s+h_p, j*w_s: j*w_s+w_p,:],axis=(1,2))return out

tf版本池化层

def pool2d(X, pool_size=(2,2),strides=(1,1)):N,H,W,C = tf.shape(X)p_h,p_w = pool_sizes_h,s_w = stridesY = tf.zeros((N,(H - p_h + 1) // s_h, (W - p_w + 1)// s_w ,C))Y = tf.Variable(Y)for i in tf.range(tf.shape(Y)[1]):for j on tf.range(tf.shape(Y)[2]):Y[:,i,j,:].assign(tf.math.reduce_max(X[:,i*s_h : i*s_h+p_h, j*s_w : j*s_w+p_w,:],axis=(1,2),keepdims=Flase))return Y

6)全连接层

3.常用CNN架构

N有哪些实际应用

5.总结

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。