tf.nn.conv2d是TensorFlow里面实现卷积的函数,参考文档对它的介绍并不是很详细,实际上这是搭建卷积神经网络比较核心的一个方法,非常重要
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相同,有一个地方需要注意,第三维卷积核的宽度,图像通道数,卷积核个数
,就是参数input的第四维in_channels
第三个参数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的卷积核(
)去做卷积,最后会得到一张3×3的feature map对应的shape:[1,1,1,1]
2.增加图片的通道数,使用
一张3×3五通道的图像
(对应的shape:[1,3,3,5]),
用一个1×1的卷积核(
)去做卷积,仍然是一张3×3对应的shape:[1,1,1,1]
的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')
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')
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
- 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='VALID')
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='VALID')
.....
.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')
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.步长不为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')
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')
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]
最后,把程序总结一下:
- import tensorflow as tf
- #case 2
- 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')
- #case 3
- 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')
- #case 4
- 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')
- #case 5
- 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')
- #case 6
- 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')
- #case 7
- 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')
- #case 8
- 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.global_variables_initializer()
- with tf.Session() as sess:
- sess.run(init)
- print("case 2:", sess.run(op2))
- print("case 3:", sess.run(op3))
- print("case 4:", sess.run(op4))
- print("case 5:", sess.run(op5))
- print("case 6:", sess.run(op6))
- print("case 7:", sess.run(op7))
- print("case 8:", sess.run(op8))
import tensorflow as tf
#case 2
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')
#case 3
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')
#case 4
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')
#case 5
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')
#case 6
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')
#case 7
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')
#case 8
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()
with tf.Session() as sess:
sess.run(init)
print("case 2")
print(sess.run(op2))
print("case 3")
print(sess.run(op3))
print("case 4")
print(sess.run(op4))
print("case 5")
print(sess.run(op5))
print("case 6")
print(sess.run(op6))
print("case 7")
print(sess.run(op7))
print("case 8")
print(sess.run(op8))
因为是随机初始化,我的结果是这样的:
2017-06-14 14:46:53.971064: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.
2017-06-14 14:46:53.972064: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-14 14:46:53.973064: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE3 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-14 14:46:53.974064: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-14 14:46:53.974064: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE4.2 instructions, but these are available on your machine and could speed up CPU computations.
2017-06-14 14:46:53.975064: W c:\tf_jenkins\home\workspace\release-win\device\cpu\os\windows\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions, but these are available on your machine and could speed up CPU computations.
case 2 [[[[-0.52606332]
[-2.36655617]
[-0.48506826]]
[[ 0.7017895 ]
[-0.05662251]
[ 0.63115954]]
[[ 0.75351387]
[-1.81628561]
[ 0.69173193]]]]
case 3 [[[[ 5.08282661]]]]
case 4 [[[[ -5.70981216]
[ 3.53728867]
[ -7.52579594]]
[[ 14.19870186]
[ 3.36947775]
[-10.96851921]]
[[ -1.99987721]
[ -6.66679525]
[ 7.87069702]]]]
case 5 [[[[ 1.97611344]
[ -3.00274706]
[ 3.70079923]
[ 4.49441862]
[ -4.03835535]]
[[ 2.63976121]
[ 4.15405846]
[ -5.04740715]
[ -6.53321648]
[ 1.42604685]]
[[ -1.00519633]
[ -2.40587616]
[ 1.35102236]
[ -3.97349882]
[ 0.33154559]]
[[ 5.51335049]
[ 6.49697018]
[ -1.49853706]
[-13.55869484]
[ 0.12515879]]
[[ 3.05506277]
[ -3.58232832]
[ 0.92800498]
[ -3.52981997]
[ -1.77350163]]]]
case 6 [[[[ -9.58486080e+00 6.96156359e+00 1.09597178e+01 7.39328027e-01
-3.75539064e-03 -6.91973543e+00 -3.96212459e-01]
[ 8.35196018e+00 3.83365846e+00 3.41040730e+00 2.62144852e+00
1.43929398e+00 2.24332619e+00 -5.94641685e-01]
[ 6.19311333e+00 4.75112677e+00 8.30595374e-01 -1.51628602e+00
-2.86926419e-01 -1.39958525e+00 1.85870051e+00]
[ -6.22723150e+00 1.95062137e+00 1.02717457e+01 2.76073742e+00
-1.25369473e+01 1.71717060e+00 4.38334799e+00]
[ 6.32609844e+00 4.67956161e+00 -4.51520532e-01 -1.23636160e+01
-5.47108364e+00 7.57634783e+00 3.89445138e+00]]
[[ 2.20946407e+00 2.54539537e+00 -4.68491268e+00 -9.54503822e+00
-1.61310291e+00 1.56076479e+00 -4.53735256e+00]
[ 7.45909786e+00 6.30874455e-01 -4.42721748e+00 7.53257227e+00
4.74439096e+00 5.71603584e+00 -7.23976183e+00]
[ -1.70475352e+00 -3.57074857e+00 -6.80530548e+00 -7.93163300e+00
9.13454151e+00 -1.46301813e+01 2.93460202e+00]
[ 1.22022915e+01 4.27420092e+00 -5.91523266e+00 -3.24124718e+00
1.07541504e+01 -7.49035883e+00 -4.72378635e+00]
[ 2.54469848e+00 1.11528218e+00 4.44296312e+00 1.68044262e+01
2.45967579e+00 6.48420715e+00 -7.76900244e+00]]
[[ 1.25333869e+00 -5.40638745e-01 1.12972319e+00 3.49431181e+00
5.23187399e-01 -6.65663433e+00 -6.05062485e+00]
[ -7.67155695e+00 -2.63271666e+00 -9.34344482e+00 3.22835636e+00
7.81190252e+00 -5.40972240e-02 -7.59731913e+00]
[ -1.84532869e+00 -2.30355215e+00 -1.51808828e-01 1.86622715e+00
-6.26655340e+00 -7.62870979e+00 4.38632870e+00]
[ 5.34085417e+00 3.12126875e+00 -1.01014404e+01 -9.86198068e-01
3.76195860e+00 1.69395602e+00 -6.39946103e-01]
[ -1.16484270e+01 -7.43383598e+00 -1.20559931e+00 4.26024646e-01
3.55676293e+00 -4.17652988e+00 -2.41757441e+00]]
[[ -1.27108402e+01 -1.24290597e+00 6.47658730e+00 5.67131662e+00
-8.63354492e+00 1.24997973e+00 2.21966171e+00]
[ 8.82716846e+00 4.88412237e+00 -2.79670215e+00 -1.49250259e+01
-3.16158652e+00 1.45118647e+01 -3.69530869e+00]
[ -5.35914326e+00 -8.17778015e+00 2.39483356e+00 9.30813885e+00
3.36260557e+00 -8.68805218e+00 -8.20777988e+00]
[ -2.26098847e+00 -1.01136141e+01 -6.72648144e+00 1.21624641e+01
-2.60397506e+00 -4.03512049e+00 1.16957498e+00]
[ 4.30962324e+00 -1.07495012e+01 -6.16985226e+00 -4.35356808e+00
-3.45031524e+00 -2.41650200e+00 6.33158493e+00]]
[[ -2.81642199e+00 -2.05017996e+00 1.97988451e-01 -6.29269648e+00
-3.03986573e+00 -1.44087160e+00 -4.21717739e+00]
[ 3.81572175e+00 8.75969648e-01 3.15224743e+00 7.08601522e+00
2.07415032e+00 1.25495634e+01 2.32729316e+00]
[ -2.41818595e+00 2.09442449e+00 -4.51933622e+00 -4.73766947e+00
6.71630025e-01 -5.64641094e+00 6.08739567e+00]
[ -2.13604975e+00 -3.23328424e+00 5.02121210e+00 3.26534200e+00
-1.54366744e+00 9.83236408e+00 1.10535278e+01]
[ 1.76021576e-01 -3.59739876e+00 5.37324905e+00 2.06637764e+00
2.01053119e+00 5.99147224e+00 4.48010540e+00]]]]
case 7 [[[[ -1.64238048 -3.50480175 6.73341179 -5.38003159 -3.16319394
2.97936392 1.5007838 ]
[ -8.43517113 -1.02131617 -11.20739841 -0.96980453 -1.50716877
2.20918846 3.77424669]
[ 1.82377911 9.15437889 -3.06952691 5.12972832 -0.73750699
-3.03701162 -0.53048229]]
[[ 0.58637309 1.95241702 -5.71823978 -0.61747551 3.30249333
1.59820771 -3.41877246]
[-11.4863205 1.45281851 -28.18989372 5.10940266 -4.0479002
-1.5557996 2.66930342]
[ -2.43096924 6.48180008 -14.12609291 1.23995638 -5.15160751
-3.05162811 -2.52746725]]
[[ 5.0053196 2.62140393 1.25775588 11.76145935 2.91171455
1.96272492 0.79130137]
[ -2.21061921 -0.90402603 7.48881674 1.37530994 3.11179781
1.37841344 6.62264538]
[ 8.54335499 3.48340797 -6.59915733 -6.2988081 0.19243068
4.73711348 -0.10501611]]]]
case 8 [[[[ 6.76725578e+00 -6.08127356e+00 3.37064934e+00 2.49894333e+00
2.17137888e-01 -6.04165792e+00 -1.30347860e+00]
[ 1.62116957e+00 -6.31789589e+00 -3.93674421e+00 1.00280209e+01
3.79735160e+00 8.09819031e+00 -3.12667084e+00]
[ 5.21801949e+00 4.60690880e+00 -1.31355822e+00 7.90483713e+00
-6.93842793e+00 -4.44858193e-01 8.95660210e+00]]
[[ -1.09319181e+01 8.81527007e-01 8.04250813e+00 3.03630638e+00
1.70198277e-01 -5.66809607e+00 4.79498720e+00]
[ 1.84253085e+00 5.93207550e+00 -1.38030410e+00 -1.94207897e+01
-8.39466333e-01 -5.25909042e+00 1.17442608e-01]
[ -1.32660933e+01 -3.71425080e+00 1.02344131e+01 -6.69431496e+00
1.26127586e+01 -1.00799084e+00 5.52266788e+00]]
[[ -1.62577558e+00 5.61079323e-01 -7.65262747e+00 9.65942001e+00
1.45272803e+00 5.65869427e+00 -1.34156621e+00]
[ 7.20697403e+00 8.22261238e+00 -1.70085764e+00 -3.25494099e+00
-4.67046547e+00 -2.60497117e+00 3.36051226e-01]
[ -7.61353111e+00 4.17760134e+00 6.07235813e+00 -7.10235476e-01
-6.48647785e-01 -6.48485661e-01 -1.70042515e-01]]]
[[[ 2.76987624e+00 1.33250093e+00 -5.38954115e+00 -5.04619741e+00
5.93769968e-01 2.76492023e+00 -9.49700534e-01]
[ 2.52268028e+00 1.02666636e+01 8.79963219e-01 -8.22511435e-01
-3.01407146e+00 -8.11141872e+00 1.67827976e+00]
[ -1.72072780e+00 -4.90595818e+00 6.18199921e+00 5.38866520e+00
5.86914062e+00 2.37386847e+00 -2.22012520e+00]]
[[ 2.52944183e+00 5.67809582e+00 3.94278574e+00 -3.49029970e+00
-3.32722402e+00 -9.97830200e+00 -5.94163179e-01]
[ -1.49632633e+00 -9.76519585e+00 1.34264746e+01 -4.55108595e+00
-6.06964171e-01 1.87312603e+00 -8.02031422e+00]
[ -8.71008396e+00 8.69349384e+00 -1.20362511e+01 -3.44090843e+00
5.66857004e+00 -5.52342081e+00 -8.58711004e-01]]
[[ 1.63751709e+00 -2.05122948e-01 -5.85591316e-01 1.02102494e+00
3.45612526e+00 4.15163428e-01 5.13664818e+00]
[ 3.43423510e+00 3.93246937e+00 7.85895395e+00 5.60044193e+00
2.51593828e+00 -1.79468393e-02 -4.66426468e+00]
[ -4.64441109e+00 -6.82685614e+00 2.68426228e+00 -8.48734379e-01
1.36991203e+00 -5.65177083e-01 -1.01465964e+00]]]
[[[ -2.20064592e+00 -1.12638116e-01 -1.80009699e+00 -6.07085371e+00
-2.76912689e+00 8.31840515e-01 -3.57891202e+00]
[ -2.65003014e+00 2.66735625e+00 -1.47713840e-01 -4.28291082e+00
1.23284512e+01 2.14731789e+00 -7.48025799e+00]
[ 3.37710810e+00 7.09675074e+00 -1.11187639e+01 1.42293906e+00
-1.93258631e+00 2.99749851e+00 1.06465816e+00]]
[[ 2.61144972e+00 3.34804893e+00 -2.92052293e+00 -1.82443261e-01
-3.05148721e+00 3.31360722e+00 5.80551338e+00]
[ -7.72317934e+00 5.43463755e+00 6.45791101e+00 -2.86883354e+00
2.87652802e+00 -2.80661130e+00 8.74918270e+00]
[ -4.11673403e+00 1.16041291e+00 -3.41985035e+00 1.15512228e+00
4.82202053e+00 1.67364478e-01 -1.18930244e+01]]
[[ 3.19718194e+00 1.19332027e+00 -3.84451056e+00 -4.29075241e+00
-2.76515675e+00 1.18278360e+00 -2.59048033e+00]
[ -3.35932016e+00 -6.51238561e-01 1.38441694e+00 6.85920477e+00
9.64034557e-01 -4.13727188e+00 4.36987495e+00]
[ 2.48973751e+00 1.65481651e+00 2.37398505e-01 -5.59265757e+00
1.79883158e+00 -4.75578308e-01 1.16481054e+00]]]
[[[ 5.92877340e+00 -1.33712292e-01 1.66906190e+00 1.13668931e+00
3.45588470e+00 -2.53551960e-01 8.37233186e-01]
[ -1.32443476e+00 1.12452710e+00 -2.39949298e+00 6.44278622e+00
4.53194189e+00 -2.81797767e-01 1.38358669e+01]
[ 2.25234866e+00 -7.41147232e+00 9.26180840e-01 6.48709345e+00
-4.23942900e+00 4.53352928e-01 3.53275800e+00]]
[[ -1.42710352e+00 -7.06395268e-01 -2.15401292e+00 -3.60949755e+00
-6.28622246e+00 -2.17494392e+00 -3.49328899e+00]
[ 2.16946745e+00 -2.32251978e+00 -3.05405498e+00 -8.45963287e+00
6.94201231e+00 2.24972963e+00 5.36465645e+00]
[ -3.27833247e+00 5.65112543e+00 -1.05283842e+01 4.82156515e+00
5.94692612e+00 -3.39724016e+00 5.43366957e+00]]
[[ 2.38006926e+00 -5.12373781e+00 -6.74990237e-01 -1.73918009e+00
-4.66130114e+00 -2.96519470e+00 2.29018831e+00]
[ -3.33497977e+00 9.15849686e+00 -7.69711924e+00 7.92530632e+00
-2.11515856e+00 7.06658173e+00 -2.29860687e+00]
[ -9.80789781e-01 -3.93122482e+00 5.90003061e+00 1.20781004e+00
6.46791840e+00 5.74504805e+00 2.73266888e+00]]]
[[[ -9.18041229e-01 -2.28614211e+00 2.59362102e+00 4.76201439e+00
4.58528471e+00 -3.87458825e+00 1.12633443e+00]
[ -2.50868797e+00 -4.43942642e+00 7.05060422e-01 -3.26971722e+00
-1.11222715e+01 4.57960367e+00 -4.93877745e+00]
[ 2.24102807e+00 -1.26506495e+00 -1.79960817e-01 -3.23120618e+00
-6.27641797e-01 5.32812119e-01 -1.51265597e+00]]
[[ -2.88840604e+00 -5.68820667e+00 -1.34309921e+01 -1.02166023e+01
-1.76871085e+00 1.13389337e+00 8.21288013e+00]
[ 2.30296612e+00 -1.16673002e+01 3.43024683e+00 -7.36744881e+00
-4.07608700e+00 1.32408726e+00 -1.55097933e+01]
[ 5.71044970e+00 1.10758095e+01 -5.31440878e+00 2.73195982e+00
3.40430689e+00 4.09312963e+00 -9.67467976e+00]]
[[ 4.54526472e+00 3.22451544e+00 -9.37997437e+00 -6.30340338e-01
-3.57583332e+00 6.34372854e+00 -2.22558761e+00]
[ -1.35814047e+00 7.66908216e+00 -2.85895061e+00 5.72339058e+00
-4.84876633e-02 -7.07008600e-01 -4.63479614e+00]
[ -1.91680515e+00 -4.67467117e+00 1.71807313e+00 2.63151050e+00
3.14775705e-02 -6.05364275e+00 1.15297008e+00]]]
[[[ -2.20237195e-01 -6.81537867e+00 6.31236362e+00 2.38446116e+00
2.36694050e+00 -3.11863279e+00 -7.08109999e+00]
[ 1.78735375e+00 -3.60026979e+00 2.22110605e+00 -6.34741163e+00
-3.58712745e+00 9.15894270e-01 -6.33537114e-01]
[ 3.27181077e+00 -2.26839733e+00 1.23219049e+00 3.31538796e-01
-6.53275490e+00 2.10403562e-01 6.01154518e+00]]
[[ -6.57465935e-01 4.22339344e+00 -7.64890146e+00 -5.94516563e+00
1.74173903e+00 5.62580585e+00 -6.70441985e-02]
[ 4.72588348e+00 1.77713051e+01 9.54188228e-01 4.63687134e+00
-1.37816095e+00 1.23621273e+00 1.59102237e+00]
[ -6.13924408e+00 -4.02708340e+00 4.48025560e+00 1.93128490e+00
4.51082230e+00 1.18464172e+00 1.71827459e+00]]
[[ 7.07607841e+00 4.62650776e+00 -2.91368818e+00 -9.48680496e+00
-7.02948856e+00 -4.41453028e+00 -1.46546698e+00]
[ -6.82952738e+00 -1.48193941e+01 4.44268131e+00 4.59435225e+00
1.76272058e+00 -3.91105723e+00 2.56639242e+00]
[ 6.36540270e+00 6.89653158e-01 -6.69941235e+00 -1.63398385e+00
-5.17021704e+00 2.54500103e+00 -1.23757792e+00]]]
[[[ -2.99489927e+00 -6.52301884e+00 3.87044263e+00 1.79950929e+00
5.11808252e+00 6.16729319e-01 -2.83518147e+00]
[ 3.33332109e+00 1.01459351e+01 -7.93019819e+00 -8.48755646e+00
-1.13471041e+01 -1.20185673e+00 9.12296867e+00]
[ -3.44571233e+00 2.52567244e+00 9.86605763e-01 -3.83005333e+00
7.48547077e+00 3.60538960e-02 1.98543215e+00]]
[[ 4.61365223e+00 3.82221889e+00 -3.03265333e+00 -6.17691803e+00
6.04736280e+00 -9.24414754e-01 -1.97937417e+00]
[ -5.12257159e-01 -2.04904485e+00 -5.46236753e+00 4.01417542e+00
-3.49250031e+00 -2.17701077e+00 5.53512764e+00]
[ 1.39157414e+00 -8.38040352e-01 4.75963068e+00 -8.02359867e+00
4.98993993e-01 -9.15192246e-01 3.09440994e+00]]
[[ -2.74529099e+00 3.94999504e+00 -7.85709381e-01 -5.85657501e+00
-5.83431387e+00 -1.87905717e+00 1.20637417e+00]
[ -1.52225952e+01 -4.34417582e+00 4.51112604e+00 4.99496126e+00
4.88079023e+00 5.22809601e+00 3.46670437e+00]
[ 6.66846657e+00 -3.00085235e+00 6.84555101e+00 1.63907826e-01
-3.87434053e+00 5.89314651e+00 -1.81252563e+00]]]
[[[ -1.88773870e+00 1.09447422e+01 -6.39017439e+00 -5.99226713e+00
-2.52865696e+00 -2.38019085e+00 8.98316002e+00]
[ -4.13695574e+00 -3.07833099e+00 5.37104130e+00 -4.90489185e-01
3.72303557e+00 2.41083956e+00 -5.03135061e+00]
[ -1.88399386e+00 -2.20304918e+00 3.68014216e+00 3.89192200e+00
1.88268805e+00 -2.45379925e+00 -2.79539824e-01]]
[[ -5.94709063e+00 -2.16639400e+00 -2.07845068e+00 4.68858099e+00
-1.12794137e+00 6.80767536e+00 2.89004970e+00]
[ 1.39966831e+01 8.74523258e+00 -1.04775705e+01 3.26368380e+00
2.41618574e-01 2.72138214e+00 4.05281782e+00]
[ -1.73461962e+00 -4.09651899e+00 4.56689310e+00 3.74642324e+00
-4.49646473e+00 9.52833414e-01 3.07033420e-01]]
[[ 2.38036895e+00 -2.65577936e+00 -3.07820177e+00 2.73764539e+00
-4.55635595e+00 5.30430365e+00 -5.63809013e+00]
[ -1.23837125e+00 -2.17566991e+00 1.31416774e+00 -1.80991638e+00
7.77094364e-01 -3.97821832e+00 4.51011944e+00]
[ 7.12934256e-01 4.05190706e+00 3.32093716e+00 1.34852672e+00
-1.15239739e-01 5.34319162e+00 -1.65904045e-01]]]
[[[ 6.50790262e+00 8.61094952e+00 -3.97463441e+00 -4.43200970e+00
-2.84540534e+00 -1.86651862e+00 6.60474586e+00]
[ -1.28293276e+00 -1.39623613e+01 7.86061382e+00 1.78254414e+00
9.87353802e+00 -2.76499081e+00 4.96863270e+00]
[ -3.33652139e+00 1.26868427e+00 -6.66439247e+00 5.04328609e-01
2.43588090e+00 6.00998354e+00 2.47339034e+00]]
[[ 3.01447916e+00 2.51831555e+00 1.07128983e+01 -4.79864502e+00
5.37306690e+00 -5.41412830e+00 1.46103907e+00]
[ -7.05279732e+00 -7.72752571e+00 4.10202408e+00 -4.55964613e+00
-9.13005412e-01 -3.60392094e-01 -5.03269529e+00]
[ -1.07030020e+01 -9.36883259e+00 1.70187318e+00 -2.02023315e+00
-5.67791653e+00 5.37206125e+00 -5.52780533e+00]]
[[ -1.84399533e+00 -4.36706305e-01 -4.84476471e+00 -4.50792599e+00
6.41343689e+00 -1.60007250e+00 3.50643873e+00]
[ -2.50450826e+00 9.68474579e+00 -1.51821899e+00 1.25261002e+01
2.52661514e+00 2.05225492e+00 9.17361736e-01]
[ 2.42533541e+00 9.02654171e+00 -1.22157049e+01 -4.46680427e-01
-8.36634755e-01 3.82433605e+00 -2.43912315e+00]]]
[[[ -3.42514348e+00 -6.44803333e+00 3.41714406e+00 6.85565281e+00
6.78241968e+00 3.85701418e+00 4.57887173e+00]
[ 4.58459711e+00 7.87325799e-02 -6.13661194e+00 2.80664301e+00
-1.20934761e+00 1.65178835e+00 1.06638730e+00]
[ -9.97225046e-02 2.96412373e+00 -2.72047305e+00 6.45350838e+00
1.58289790e-01 1.40424895e+00 1.55619192e+00]]
[[ -3.19208527e+00 4.69504929e+00 -6.60620260e+00 7.13848448e+00
-3.59926343e+00 2.65819025e+00 1.45583944e+01]
[ 3.16265655e+00 -3.15349126e+00 3.46172810e-01 -1.77412227e-01
1.09005136e+01 3.94094539e+00 1.28033161e+00]
[ -3.65051031e+00 1.84579825e+00 2.79313636e+00 -4.27654886e+00
-1.73083258e+00 -3.60854626e-01 -3.09923792e+00]]
[[ 4.62664270e+00 -4.74056816e+00 -5.72024536e+00 -5.35546541e+00
-7.94474602e+00 -3.75466156e+00 5.67611361e+00]
[ -1.68416710e+01 -8.02755070e+00 9.71607971e+00 2.98279428e+00
5.30612469e+00 -6.35753810e-01 5.61828756e+00]
[ 4.38614941e+00 3.11239791e+00 -6.71634388e+00 -4.19947815e+00
-5.62045860e+00 9.77870083e+00 -1.09575939e+00]]]]