TensorFlow tf.nn.conv2d如何实现卷积的方式

这篇文章主要介绍TensorFlow tf.nn.conv2d如何实现卷积的方式,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

介绍

TensorFlow tf.nn.conv2d如何实现卷积的方式

惯例先展示函数:

tf.nn.conv2d(input, filter, strides, padding, use_cudnn_on_gpu=None, name=None)

除去name参数用以指定该操作的name,与方法有关的一共五个参数:

input:

指需要做卷积的输入图像,它要求是一个Tensor,具有[batch, in_height, in_width, in_channels]这样的shape,具体含义是[训练时一个batch的图片数量, 图片高度, 图片宽度, 图像通道数],注意这是一个4维的Tensor,要求类型为float32和float64其中之一

filter:

相当于CNN中的卷积核,它要求是一个Tensor,具有[filter_height, filter_width, in_channels, out_channels]这样的shape,具体含义是[卷积核的高度,卷积核的宽度,图像通道数,卷积核个数],要求类型与参数input相同,有一个地方需要注意,第三维in_channels,就是参数input的第四维

strides:卷积时在图像每一维的步长,这是一个一维的向量,长度4

padding:

string类型的量,只能是”SAME”,”VALID”其中之一,这个值决定了不同的卷积方式(后面会介绍)

use_cudnn_on_gpu:

bool类型,是否使用cudnn加速,默认为true

结果返回一个Tensor,这个输出,就是我们常说的feature map

实验

那么TensorFlow的卷积具体是怎样实现的呢,用一些例子去解释它:

1.考虑一种最简单的情况,现在有一张3×3单通道的图像(对应的shape:[1,3,3,1]),用一个1×1的卷积核(对应的shape:[1,1,1,1])去做卷积,最后会得到一张3×3的feature map

2.增加图片的通道数,使用一张3×3五通道的图像(对应的shape:[1,3,3,5]),用一个1×1的卷积核(对应的shape:[1,1,1,1])去做卷积,仍然是一张3×3的feature map,这就相当于每一个像素点,卷积核都与该像素点的每一个通道做点积

input=tf.Variable(tf.random_normal([1,3,3,5]))
filter=tf.Variable(tf.random_normal([1,1,5,1]))

op=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='VALID')

3.把卷积核扩大,现在用3×3的卷积核做卷积,最后的输出是一个值,相当于情况2的feature map所有像素点的值求和

input=tf.Variable(tf.random_normal([1,3,3,5]))
filter=tf.Variable(tf.random_normal([3,3,5,1]))

op=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='VALID')

4.使用更大的图片将情况2的图片扩大到5×5,仍然是3×3的卷积核,令步长为1,输出3×3的feature map

.....
.xxx.
.xxx.
.xxx.
.....

5.上面我们一直令参数padding的值为‘VALID',当其为‘SAME'时,表示卷积核可以停留在图像边缘,如下,输出5×5的feature map

input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,1]))

op=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='SAME')
xxxxx
xxxxx
xxxxx
xxxxx
xxxxx

6.如果卷积核有多个

input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,7]))

op=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='SAME')

此时输出7张5×5的feature map

7.步长不为1的情况,文档里说了对于图片,因为只有两维,通常strides取[1,stride,stride,1]

input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,7]))

op=tf.nn.conv2d(input,filter,strides=[1,2,2,1],padding='SAME')

此时,输出7张3×3的feature map

x.x.x
.....
x.x.x
.....
x.x.x

8.如果batch值不为1,同时输入10张图

input=tf.Variable(tf.random_normal([10,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,7]))

op=tf.nn.conv2d(input,filter,strides=[1,2,2,1],padding='SAME')

每张图,都有7张3×3的feature map,输出的shape就是[10,3,3,7]

代码清单

最后,把程序总结一下:

importtensorflowastf
#case2
input=tf.Variable(tf.random_normal([1,3,3,5]))
filter=tf.Variable(tf.random_normal([1,1,5,1]))

op2=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='VALID')
#case3
input=tf.Variable(tf.random_normal([1,3,3,5]))
filter=tf.Variable(tf.random_normal([3,3,5,1]))

op3=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='VALID')
#case4
input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,1]))

op4=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='VALID')
#case5
input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,1]))

op5=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='SAME')
#case6
input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,7]))

op6=tf.nn.conv2d(input,filter,strides=[1,1,1,1],padding='SAME')
#case7
input=tf.Variable(tf.random_normal([1,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,7]))

op7=tf.nn.conv2d(input,filter,strides=[1,2,2,1],padding='SAME')
#case8
input=tf.Variable(tf.random_normal([10,5,5,5]))
filter=tf.Variable(tf.random_normal([3,3,5,7]))

op8=tf.nn.conv2d(input,filter,strides=[1,2,2,1],padding='SAME')

init=tf.initialize_all_variables()
withtf.Session()assess:
sess.run(init)
print("case2")
print(sess.run(op2))
print("case3")
print(sess.run(op3))
print("case4")
print(sess.run(op4))
print("case5")
print(sess.run(op5))
print("case6")
print(sess.run(op6))
print("case7")
print(sess.run(op7))
print("case8")
print(sess.run(op8))

因为是随机初始化,我的结果是这样的:

case2
[[[[-0.64064658]
[-1.82183945]
[-2.63191342]]

[[8.05008984]
[1.66023612]
[2.53465152]]

[[-3.51703644]
[-5.92647743]
[0.55595356]]]]
case3
[[[[10.53139973]]]]
case4
[[[[10.45460224]
[6.23760509]
[4.97157574]]

[[3.05653667]
[-11.43907833]
[-2.05077457]]

[[-7.48340607]
[-0.90697062]
[3.27171206]]]]
case5
[[[[5.30279875]
[-2.75329947]
[5.62432575]
[-10.24609661]
[0.12603235]]

[[0.2113893]
[1.73748684]
[-3.04372549]
[-7.2625494]
[-12.76445198]]

[[-1.57414591]
[-3.39802694]
[-6.01582575]
[-1.73042905]
[-3.07183361]]

[[1.41795194]
[-2.02815866]
[-17.08983231]
[11.98958111]
[2.44879103]]

[[0.29902667]
[-3.19712877]
[-2.84978414]
[-2.71143317]
[5.99366283]]]]
case6
[[[[12.025043494.350772862.672078135.778931626.98221684
-0.96858567-8.1147871]
[-0.02988982-2.5214195315.247551926.39476395-4.36355495
-2.345150955.55743504]
[-2.74448752-1.62703776-6.8484940510.122488023.7408421
4.714390756.13722801]
[0.82365227-1.00546622-3.294607645.12690163-0.75699937
-2.60097408-8.33882809]
[0.76171923-0.86230004-6.30558443-5.584268572.70478535
8.98232937-2.45504045]]

[[3.13419819-13.964832310.420311032.975595476.86646557
-3.44916964-0.10199898]
[11.65359879-5.21459774.283527372.683353193.21993709
-6.773380288.08918095]
[0.91533852-0.31835344-1.06122255-9.112377175.05267143
5.6913228-5.23855162]
[-0.58775592-5.0353145614.702548989.78966522-11.00562763
-4.08925819-3.29650426]
[-2.23447251-0.18028721-4.8061070411.2093544-6.72472
-2.675476071.68422937]]

[[-3.40548897-9.70355129-1.05640507-2.55293012-2.78455877
-15.05377483-4.16571808]
[13.669258122.875881918.290563586.719415662.56558466
10.103290562.88392687]
[-6.30473804-3.307386412.43273926-0.660882232.94875336
0.06056046-2.78857946]
[-7.14735603-1.442817933.3629775-7.873050212.00383091
-2.50426936-6.93097973]
[-3.158175711.858215930.60049552-0.43315536-4.43284273
0.542647961.54882073]]

[[2.19440389-0.21308756-4.35629082-3.62100363-0.08513772
-0.809403667.57606506]
[-2.657137390.45524287-16.04298019-5.19629049-0.63200498
1.13256514-6.70045137]
[8.007925994.09538221-6.162501818.35843849-4.25959206
-1.5945878-7.60996151]
[8.567875865.85663748-4.386564250.12728286-6.53928804
2.32006559.47253895]
[-6.629677772.88872099-2.76913023-0.86287498-1.4262073
-6.599672325.97229099]]

[[-3.594233274.60458899-5.083005911.320785763.27156973
0.5302844-5.27635145]
[-0.877938811.796246651.66793108-4.70763969-2.87593603
-1.26820421-7.72825718]
[-1.49699068-3.40959787-1.21225107-1.11641395-8.50123024
-0.593994743.18010235]
[-4.4249506-0.73349547-1.49064219-6.099678995.18624878
-3.80284953-0.55285597]
[-1.429345852.76053572-5.197957990.83952439-0.15203482
0.285644622.66513705]]]]
case7
[[[[2.662230972.64498258-2.933021073.509351254.62247562
2.04241085-2.65325522]
[-0.03272867-1.00103927-4.36915972.167248017.75251007
-4.6788125-0.89318085]
[4.74175072-0.80443329-1.02710629-6.687725544.57605314
-3.729937554.79951382]]

[[5.2495478.922883997.10703182-9.10498428-7.43814278
-8.696163181.78862095]
[7.53669024-14.52316284-2.55870199-1.119767433.81035042
2.45559502-2.35436153]
[3.932758815.11939669-4.7114296-11.963866232.11866689
0.57433248-7.19815397]]

[[0.251116721.408016681.28818977-2.640938280.98182392
3.695129874.78833389]
[0.30391204-10.264060976.05877018-6.047750478.95922089
0.80235004-5.4520669]
[-7.24697018-2.33498096-10.20039558-1.243076093.99351597
-8.10291292.44411373]]]]
case8
[[[[-6.84037447e+001.33321762e-01-5.09891272e+005.55682087e+00
8.22002888e+00-4.94586229e-024.19012117e+00]
[6.79884481e+001.21652853e+00-5.69557810e+00-1.33555794e+00
3.24849486e-014.88868570e+00-3.90220714e+00]
[-3.53190374e+00-4.11765718e+004.54340839e+001.85549557e+00
-3.38682461e+002.62719369e+00-4.98658371e+00]]

[[-9.86354351e+00-6.76713943e+003.62617874e+00-6.16720629e+00
1.96754158e+00-4.54203081e+00-1.37485743e+00]
[-1.76783955e+002.35163045e+00-2.21175838e+003.83091879e+00
3.16964531e+00-7.58307219e+004.71943617e+00]
[1.20776439e+004.86006308e+001.04233503e+01-7.82327271e+00
5.39195156e+00-6.31672382e+001.35577369e+00]]

[[-3.65947580e+00-1.98961139e+007.53771305e+002.79224634e-01
-2.90050888e+00-3.57466817e+00-6.33232594e-01]
[5.89931488e-012.83219159e-01-1.65850735e+00-6.45545387e+00
-1.17044592e+001.40343285e+005.74970901e-01]
[-8.58810043e+00-1.25172977e+016.84177876e-013.80004168e+00
-1.54420209e+00-3.32161427e+00-1.05423713e+00]]]


[[[-4.82677078e+003.11167526e+00-4.32694483e+00-4.77198696e+00
2.32186103e+001.65402293e-01-5.32707453e+00]
[3.91779566e+006.27949667e+002.32975650e+00-1.06336937e+01
4.44044876e+008.08288479e+00-5.83346319e+00]
[-2.82141399e+00-9.16103745e+006.98908520e+00-5.66505909e+00
-2.11039782e+002.27499461e+00-5.74120235e+00]]

[[6.71680808e-01-4.01104212e+00-4.61760712e+001.02667952e+01
-8.21200657e+00-8.57054043e+001.71461976e+00]
[2.40794683e+00-2.63071585e+009.68963623e+00-4.51778412e+00
-3.91073084e+00-5.91874409e+009.96273613e+00]
[2.67705870e+002.85607010e-012.45853162e+004.44810390e+00
-2.11300468e+00-5.77583075e+002.83322239e+00]]

[[-8.21949577e+00-7.57754421e+003.93484974e+002.26189137e+00
-3.49395227e+00-6.40283823e+00-6.00450039e-01]
[2.95964479e-02-1.19976890e+005.38537979e+004.62369967e+00
3.89780998e+00-6.36872959e+007.12107182e+00]
[-8.85006547e-011.92706418e+003.26668215e+002.03566647e+00
1.44209075e+00-6.48463774e+00-8.33671093e-02]]]


[[[-2.64583921e+003.86011934e+004.18198538e+003.50338411e+00
6.35944796e+00-4.28423309e+004.87355423e+00]
[4.42271233e+003.92883778e+00-5.59371090e+004.98251200e+00
-3.45068884e+002.91921115e+001.03779554e+00]
[1.36162388e+00-1.06808968e+01-3.92534947e+001.85111761e-01
-4.87255526e+001.66666222e+01-1.04918976e+01]]

[[-4.34632540e+001.74614882e+00-2.89012527e+00-8.74067783e+00
5.06610107e+001.24989772e+00-3.06433105e+00]
[2.49973416e+002.14041996e+00-4.71008825e+007.39326143e+00
3.94770741e+008.23049164e+00-1.67046225e+00]
[-2.94665837e+00-4.58543825e+007.21219683e+001.09780006e+01
5.17258358e+007.90257788e+00-2.13929534e+00]]

[[4.20402241e+00-2.98926830e+00-3.89006615e-01-8.16001511e+00
-2.38355541e+001.42584383e+00-5.46632290e+00]
[5.52395058e+005.09255171e+00-1.08742390e+01-4.96262169e+00
-1.35298109e+003.65663052e-01-3.40589857e+00]
[-6.95647061e-01-4.12855625e+002.66609401e-01-9.39565372e+00
-3.85058141e+002.51248240e-01-5.77149725e+00]]]


[[[1.22103825e+015.72040796e+00-3.56989503e+00-1.02248180e+00
-5.20942688e-017.15008640e+003.43482435e-01]
[6.01409674e+00-1.59511256e+00-6.48080063e+00-1.82889538e+01
-1.03537569e+01-1.48270035e+01-5.26662111e+00]
[5.51758146e+00-2.91831636e+003.75461340e-01-9.23893452e-02
-9.22101116e+007.16952372e+00-6.86479330e-01]]

[[-3.03645611e+006.68620300e+00-3.31973934e+00-4.91346550e+00
9.20719814e+00-2.55552864e+00-2.16087699e-02]
[-3.02986956e+00-1.29726543e+011.53023469e+00-8.19733238e+00
5.68085670e+00-1.72856820e+00-4.69369221e+00]
[-6.67176056e+008.76355553e+002.18996063e-01-4.38777208e+00
-6.35764122e-01-1.37812555e+00-4.41474581e+00]]

[[2.25345469e+001.02142305e+01-1.71714854e+00-5.29060185e-01
2.27982092e+00-8.75302982e+007.13998675e-02]
[-6.67547846e+003.67722750e+00-3.44172812e+005.69674826e+00
-2.28723526e+005.92991543e+005.53608060e-01]
[-1.01174891e-01-2.73731589e+00-4.06187654e-016.54158068e+00
2.59603882e+002.99202776e+00-2.22350287e+00]]]


[[[-1.81271315e+002.47674489e+00-2.90284491e+001.34291325e+01
7.69864845e+00-1.27134466e+003.02233839e+00]
[-2.08135307e-011.03206539e+001.90775347e+009.01517391e+00
-3.52140331e+009.05393791e+00-9.12732124e-01]
[1.12128162e+005.98179293e+00-2.27206993e+00-5.21281779e-01
6.20835352e+003.73474598e+001.18961644e+00]]

[[3.17242837e+00-6.00571585e+002.37661076e+00-5.64483738e+00
-6.45412731e+008.75251675e+007.33790398e-02]
[3.08957529e+00-1.06855690e-01-5.16810894e-01-9.41085911e+00
8.23878098e+006.79738426e+00-1.23478663e+00]
[-9.20640087e+00-6.82801771e+00-5.96975613e+007.61030674e-01
-4.35995817e+00-3.54818010e+00-2.56281614e+00]]

[[4.69872713e-018.36402321e+005.37103415e-01-1.68033957e-01
-3.21731424e+00-7.34270859e+00-3.14253521e+00]
[6.69656086e+00-5.27954197e+00-8.57314682e+004.84328842e+00
-2.96387672e+002.47114658e+002.85376692e+00]
[-7.86032295e+00-7.18845367e+00-3.27161223e-019.27330971e+00
-6.14093494e+00-4.49041557e+003.47160912e+00]]]


[[[-1.89188433e+005.43082857e+006.04252160e-016.92894220e+00
8.59178162e+001.02003086e+005.31300211e+00]
[-8.97491455e-016.52438164e+00-4.43710327e+007.10509634e+00
8.84234428e+003.08552694e+002.78152227e+00]
[-9.40537453e-022.34666920e+00-5.57496691e+00-8.62346458e+00
-1.32807600e+00-8.12027454e-02-9.00946975e-01]]

[[-3.53673506e+008.93675327e+003.27456236e-01-3.41519475e+00
7.69804525e+00-5.18698692e+00-3.96991730e+00]
[1.99988627e+00-9.16149998e+00-7.49944544e+005.02162695e-01
3.57059622e+009.17566013e+00-1.77589107e+00]
[-1.18147678e+01-7.68992901e+001.88449645e+002.77643538e+00
-1.11342735e+01-3.12916255e+00-3.34161663e+00]]

[[-3.62668943e+00-3.10993242e+003.60834384e+004.69678783e+00
-1.73794723e+00-1.27035933e+013.65882218e-01]
[-8.97550106e+00-4.33533072e-014.41743970e-01-5.83433771e+00
-4.85818958e+009.56629372e+003.56375504e+00]
[-6.87092066e+001.96412420e+005.14182663e+00-8.97769547e+00
3.61136627e+005.91387987e-01-2.95224571e+00]]]


[[[-1.11802626e+003.24175072e+005.94067669e+009.29727936e+00
9.28199863e+00-4.80889034e+006.96202660e+00]
[7.23959684e+003.11182523e+001.84116721e+005.12095928e-01
-7.65049171e+00-4.05325556e+005.38544941e+00]
[4.66621685e+00-1.61665392e+009.76448345e+002.38519001e+00
-2.06760812e+00-6.03633642e-013.66192675e+00]]

[[1.52149725e+00-1.84441996e+004.87877655e+002.96750760e+00
2.37311172e+00-2.98487616e+009.98114228e-01]
[9.20035839e+005.24396753e+00-2.57312679e+00-7.26040459e+00
-1.17509928e+016.85688591e+003.37383580e+00]
[6.17629957e+00-5.15294194e-01-1.64212489e+00-5.70274448e+00
-2.36294913e+002.60432816e+002.63957453e+00]]

[[7.91168213e-03-1.15018034e+003.05471039e+003.31086922e+00
5.35744762e+001.14832592e+009.56500292e-01]
[4.86464739e+005.37348413e+001.42920148e+001.62809372e+00
2.61656570e+007.88479471e+00-6.09324336e-01]
[7.71319962e+00-1.73930550e+00-2.99925613e+00-3.14857435e+00
3.19194889e+001.70928288e+004.90955710e-01]]]


[[[-1.79046512e+008.54369068e+001.85044312e+00-9.88471413e+00
9.52995300e-01-1.34820042e+01-1.13713551e+01]
[8.37582207e+006.64692163e+00-3.22429276e+003.37997460e+00
3.91468263e+006.96061993e+00-1.18029404e+00]
[-2.13278866e+004.36152029e+00-4.14593410e+00-2.15160155e+00
1.90767622e+001.16321917e+01-3.72644544e+00]]

[[-5.03508925e-01-6.33426476e+00-1.06393566e+01-6.49301624e+00
-6.31036520e+003.13485146e+00-5.77433109e-01]
[7.41444230e-01-4.87326956e+00-5.98253345e+00-9.14121056e+00
-8.64077091e-012.06696177e+00-7.59688473e+00]
[1.38767815e+001.84418947e-015.72539902e+00-2.07557893e+00
9.70911503e-011.16765432e+01-1.40111232e+00]]

[[-1.21869087e+002.44499159e+00-1.65706706e+00-6.19807529e+00
-5.56950712e+00-1.72372568e+003.62687564e+00]
[2.23708963e+00-2.87862611e+002.71666467e-014.35115099e+00
-8.85548592e-012.91860628e+008.10848951e-01]
[-5.33635712e+007.15072036e-015.21240902e+00-3.11152220e+00
2.01623154e+00-2.28398323e-01-3.23233747e+00]]]


[[[3.77991509e+005.53513861e+00-1.82022047e+004.22430277e+00
5.60331726e+00-4.28308249e+004.54524136e+00]
[-5.30983162e+00-3.45605731e+002.69374561e+00-6.16836596e+00
-9.18601036e+00-1.58697796e+00-5.73809910e+00]
[2.18868661e+006.96338892e-011.88057957e+01-4.21353197e+00
1.20818818e+002.85108542e+006.62180042e+00]]

[[1.01285219e+01-4.86819077e+00-2.45067930e+007.50106812e-01
4.37201977e+004.78472042e+001.19103444e+00]
[-3.26395583e+00-5.59358537e-011.52001972e+01-5.93994498e-01
-1.49040818e+00-7.02547312e+00-1.29268813e+00]
[1.02763653e+011.31108007e+01-2.91605043e+00-1.37688947e+00
3.33029580e+001.96966705e+012.55259371e+00]]

[[4.58397627e+00-3.19160700e+00-6.51985502e+001.02908373e+01
-4.17618275e+00-9.69347239e-017.46259832e+00]
[6.09876537e+001.33044279e+005.04027081e+00-6.87740147e-01
4.14770365e+00-2.26751328e-011.54876924e+00]
[2.70127630e+00-1.59834003e+00-1.82587504e+00-5.92888784e+00
-5.65038967e+00-6.46078014e+00-1.80765367e+00]]]


[[[-1.57899165e+003.39969063e+001.02308102e+01-7.77082300e+00
-8.02129686e-01-3.67387819e+00-1.37204361e+00]
[3.93093729e+006.17498016e+00-1.41695750e+00-1.26903206e-01
2.18985319e+005.83657503e-017.39725351e-01]
[5.53898287e+002.22283316e+00-1.10478985e+002.68644023e+00
-2.59913635e+003.74231935e+004.85016155e+00]]

[[4.05368614e+00-3.74058294e+007.32348633e+00-1.17656231e+00
3.71810269e+00-1.63957381e+009.91670132e-01]
[-1.29317007e+011.12296543e+01-1.13844347e+01-7.13933802e+00
-8.65884399e+00-5.56065178e+00-1.46718264e+00]
[-8.08718109e+00-1.98826480e+00-4.07488203e+002.06440473e+00
1.13524094e+015.68703651e+00-2.18706942e+00]]

[[1.51166654e+00-6.84034204e+009.33474350e+00-4.80931902e+00
-6.24172688e-02-4.21381521e+00-5.73313046e+00]
[-1.35943902e+005.27799511e+00-3.77813816e+006.88291168e+00
4.35068893e+00-1.02540245e+018.86861205e-01]
[-4.49999619e+00-2.97630525e+00-6.18604183e-01-2.49702692e+00
-6.76169348e+00-2.55930996e+00-2.71291423e+00]]]]

以上是“TensorFlow tf.nn.conv2d如何实现卷积的方式”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注恰卡编程网行业资讯频道!

发布于 2021-05-30 14:06:30
收藏
分享
海报
0 条评论
180
上一篇:HTML5如何去掉输入框type为number时的上下箭头 下一篇:Java中二叉树遍历的常用方法有哪些
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码