本节仿真实现《深度学习之TensorFlow》(机械工业出版社)第七章 P120
代码7-1 线性逻辑回归
1 import tensorflow as tf 2 import numpy as np 3 import matplotlib.pyplot as plt 4 5 6 def generate(sample_size, mean, cov, regression): 7 # mean=[[x1, y1], 8 # [x2, y2], 9 # [x3, y3]] 10 # mean=[[2, 2], 11 # [5, 5], 12 # [5, 2]] 13 14 # cov=[ [x1, y1], 15 # [x2, y2], 16 # [x3, y3]] 17 # cov=[ [1.5, 1], 18 # [1.5, 2.3], 19 # [1.2, 1.6]] 20 21 # regression=Ture: 转化为one-hot label 22 23 import numpy as np 24 import tensorflow as tf 25 import matplotlib.pyplot as plt 26 27 # 总训练数量 28 batchSize = np.array(sample_size, dtype=np.int16) 29 # 单个训练集数量 30 eachBatchSize = 10 31 32 # mean:位置均值 33 meaLoc = np.array(mean, dtype=np.float16) 34 35 # cov:位置标准差 36 covLoc = np.array(cov, np.float16) 37 38 # Red points 39 redPointsX = np.random.normal(loc=meaLoc[0, 0], scale=covLoc[0, 0], size=batchSize[0]) 40 print("redX=", redPointsX) 41 redPointsY = np.random.normal(loc=meaLoc[0, 1], scale=covLoc[0, 1], size=batchSize[0]) 42 print("redY=", redPointsY) 43 44 ''' 45 numpy中reshape函数的三种常见相关用法 46 reshape(1,-1)转化成1行: 47 reshape(2,-1)转换成两行: 48 reshape(-1,1)转换成1列: 49 reshape(-1,2)转化成两列 50 ''' 51 redP = np.concatenate(([redPointsX], [redPointsY]), 0) 52 print("red=", redP) 53 print("redPxEachBatch=", redP[0, 1:eachBatchSize], 54 "redPyEachBatch=", redP[1, 1:eachBatchSize]) 55 56 # Blue Points 57 bluePointsX = np.random.normal(loc=meaLoc[1, 0], scale=covLoc[1, 0], size=batchSize[1]) 58 print("blueX=", bluePointsX) 59 bluePointsY = np.random.normal(loc=meaLoc[1, 1], scale=covLoc[1, 1], size=batchSize[1]) 60 print("blueY=", bluePointsY) 61 62 blueP = np.concatenate(([bluePointsX], [bluePointsY]), 0) 63 print("blue=", blueP) 64 print("bluePxEachBatch=", blueP[0, 1:eachBatchSize], 65 "bluePyEachBatch=", blueP[1, 1:eachBatchSize]) 66 67 # Yellow points 68 yellowPointsX = np.random.normal(loc=meaLoc[2, 0], scale=covLoc[2, 0], size=batchSize[2]) 69 print("yellowX=", yellowPointsX) 70 yellowPointsY = np.random.normal(loc=meaLoc[2, 1], scale=covLoc[2, 1], size=batchSize[2]) 71 print("yellowY=", yellowPointsY) 72 73 yellowP = np.concatenate(([yellowPointsX], [yellowPointsY]), 0) 74 print("yellow=", yellowP) 75 print("yellowPxEachBatch=", yellowP[0, 1:eachBatchSize], 76 "yellowPyEachBatch=", yellowP[1, 1:eachBatchSize]) 77 78 # one-hot编码 79 XLabel = np.concatenate((redPointsX, bluePointsX, yellowPointsX), 0) 80 YLabel = np.concatenate((redPointsX, bluePointsY, yellowPointsY), 0) 81 X0 = np.concatenate(([XLabel], [YLabel]), 0) 82 X0 = X0.T 83 84 print("X0=", X0) 85 LabelIndex = np.concatenate((np.zeros((len(redPointsX))), np.ones((len(bluePointsX))), 86 2 * np.ones((len(yellowPointsX)))), 0) 87 Y0 = LabelIndex.copy() 88 print("LabelIndex=", LabelIndex) 89 print("Y0=", Y0) 90 91 plt.figure(1) 92 plt.scatter(redP[0, :], redP[1, :], c='red') 93 plt.scatter(blueP[0, :], blueP[1, :], c='blue') 94 plt.scatter(yellowP[0, :], yellowP[1, :], c='yellow') 95 plt.title('Exercise Set') 96 plt.show() 97 98 print("LabelIndex.shape=", LabelIndex.shape) 99 b = LabelIndex.shape[0] 100 print("b=", b) 101 102 103 if regression == True: 104 oneHotLabel = np.zeros((b, 3)) 105 print("oneHotLabel=", oneHotLabel) 106 for i, ele in enumerate(LabelIndex): 107 print("i=", i, "ele=", ele) 108 if ele == 0: 109 oneHotLabel[i, 2] = 1 110 elif ele == 1: 111 oneHotLabel[i, 1] = 1 112 else: 113 oneHotLabel[i, 0] = 1 114 print("oneHotLabel=", oneHotLabel) 115 return X0, Y0, oneHotLabel 116 else: 117 return X0, Y0, LabelIndex 118 119 120 mean = [[2, 2], [5, 5], [5, 2]] 121 cov = [[1.5, 1.0], 122 [1.5, 2.3], 123 [1.2, 1.6]] 124 regression = True 125 126 X0, Y0, OneHotLabel = generate([100, 100, 100], mean, cov, regression) 127 print("X0=", X0, " ", "Y0=", Y0, " ", "OneHotLabel=", OneHotLabel)
X0= [[ 1.29076547e+00 1.29076547e+00]
[ 2.54851831e+00 2.54851831e+00]
[ 1.74291254e+00 1.74291254e+00]
[ 5.29646562e-01 5.29646562e-01]
[ 2.88065974e+00 2.88065974e+00]
[ 2.60421278e+00 2.60421278e+00]
[ 2.30844318e+00 2.30844318e+00]
[ 3.51963078e+00 3.51963078e+00]
[ -3.24017993e-01 -3.24017993e-01]
[ 1.08355284e+00 1.08355284e+00]
[ 2.73900852e+00 2.73900852e+00]
[ 4.47037447e+00 4.47037447e+00]
[ 3.31775615e+00 3.31775615e+00]
[ 2.28840679e+00 2.28840679e+00]
[ 2.99576047e+00 2.99576047e+00]
[ -4.90235098e-01 -4.90235098e-01]
[ 3.41406014e-01 3.41406014e-01]
[ 1.81782017e+00 1.81782017e+00]
[ 4.98798045e-01 4.98798045e-01]
[ 1.92536423e+00 1.92536423e+00]
[ 2.27335473e+00 2.27335473e+00]
[ 2.95426513e+00 2.95426513e+00]
[ 1.28975792e+00 1.28975792e+00]
[ 4.44187724e+00 4.44187724e+00]
[ 7.88474884e-02 7.88474884e-02]
[ 3.02857003e+00 3.02857003e+00]
[ 9.08319956e-01 9.08319956e-01]
[ 4.04888265e+00 4.04888265e+00]
[ 3.14416173e+00 3.14416173e+00]
[ 5.88474500e-01 5.88474500e-01]
[ 3.83000196e+00 3.83000196e+00]
[ -5.65633480e-01 -5.65633480e-01]
[ -8.60629478e-01 -8.60629478e-01]
[ 7.14321575e-01 7.14321575e-01]
[ 3.65021976e-01 3.65021976e-01]
[ 1.57987343e+00 1.57987343e+00]
[ 5.19906629e-01 5.19906629e-01]
[ 2.55787372e+00 2.55787372e+00]
[ 1.55685212e+00 1.55685212e+00]
[ 2.05276439e+00 2.05276439e+00]
[ 3.20471039e-01 3.20471039e-01]
[ -7.52957963e-03 -7.52957963e-03]
[ 1.15617381e+00 1.15617381e+00]
[ 2.17552917e+00 2.17552917e+00]
[ 2.17140368e+00 2.17140368e+00]
[ 7.15749052e-01 7.15749052e-01]
[ 1.69920151e+00 1.69920151e+00]
[ 1.24721025e+00 1.24721025e+00]
[ 1.57737946e+00 1.57737946e+00]
[ 4.95696212e-01 4.95696212e-01]
[ 3.63449642e+00 3.63449642e+00]
[ 1.23688941e+00 1.23688941e+00]
[ 4.74146141e-01 4.74146141e-01]
[ 4.21645225e-01 4.21645225e-01]
[ 1.72064770e+00 1.72064770e+00]
[ 2.05759547e+00 2.05759547e+00]
[ 2.05697512e+00 2.05697512e+00]
[ 1.30873311e+00 1.30873311e+00]
[ 1.52518459e+00 1.52518459e+00]
[ 1.93059044e+00 1.93059044e+00]
[ 1.84468414e+00 1.84468414e+00]
[ 4.30497384e+00 4.30497384e+00]
[ 1.37526168e+00 1.37526168e+00]
[ 4.02961747e+00 4.02961747e+00]
[ 1.98000138e-01 1.98000138e-01]
[ 2.64359245e+00 2.64359245e+00]
[ -4.14280133e-01 -4.14280133e-01]
[ 6.76870096e-01 6.76870096e-01]
[ 2.59816164e+00 2.59816164e+00]
[ 3.24663037e+00 3.24663037e+00]
[ 1.30200617e+00 1.30200617e+00]
[ 3.56004577e+00 3.56004577e+00]
[ 4.76415848e-01 4.76415848e-01]
[ 4.70651148e+00 4.70651148e+00]
[ 1.81170417e+00 1.81170417e+00]
[ 1.45078253e+00 1.45078253e+00]
[ 1.30607357e+00 1.30607357e+00]
[ 3.50190561e+00 3.50190561e+00]
[ 7.11759256e-01 7.11759256e-01]
[ 2.43706823e+00 2.43706823e+00]
[ 3.12792500e+00 3.12792500e+00]
[ 1.46862266e+00 1.46862266e+00]
[ 2.30718376e+00 2.30718376e+00]
[ 3.41601656e+00 3.41601656e+00]
[ -9.22891878e-01 -9.22891878e-01]
[ 1.33069830e-02 1.33069830e-02]
[ 1.03524602e+00 1.03524602e+00]
[ -1.59941249e+00 -1.59941249e+00]
[ 1.90648078e+00 1.90648078e+00]
[ 2.74478203e+00 2.74478203e+00]
[ 1.13376549e+00 1.13376549e+00]
[ 4.14608341e-03 4.14608341e-03]
[ 1.26943541e+00 1.26943541e+00]
[ 2.92539530e+00 2.92539530e+00]
[ 6.27725946e-01 6.27725946e-01]
[ -2.66369953e-01 -2.66369953e-01]
[ 1.46060918e+00 1.46060918e+00]
[ 3.64735160e+00 3.64735160e+00]
[ 2.54276675e+00 2.54276675e+00]
[ 6.77082350e-02 6.77082350e-02]
[ 2.94414913e+00 6.20175890e+00]
[ 3.99321644e+00 6.71789559e+00]
[ 6.00424087e+00 3.29604029e+00]
[ 5.71946014e+00 -3.08500269e-01]
[ 4.58121976e+00 -3.24013876e-01]
[ 4.65189543e+00 3.24326524e+00]
[ 2.58938182e+00 7.35202730e+00]
[ 4.90589757e+00 3.63598706e+00]
[ 4.87251434e+00 7.34051103e+00]
[ 4.80895543e+00 4.24207547e+00]
[ 6.26552396e+00 2.58032111e+00]
[ 2.23707067e+00 6.58839943e+00]
[ 4.53441398e+00 5.81389578e+00]
[ 6.40000340e+00 4.69612378e+00]
[ 5.90637343e+00 6.05464948e+00]
[ 5.54101076e+00 2.87967500e+00]
[ 5.80300994e+00 6.72813841e+00]
[ 3.40929647e+00 4.99377318e+00]
[ 3.49886677e+00 2.81084325e+00]
[ 4.75999650e+00 5.62626077e+00]
[ 2.56689263e+00 1.59157463e-01]
[ 4.27751666e+00 7.45282858e+00]
[ 2.83089397e+00 8.22895986e+00]
[ 4.99739675e+00 8.30407604e-01]
[ 7.22261566e+00 5.49545722e+00]
[ 3.60969870e+00 9.31073825e+00]
[ 5.65658402e+00 2.26859403e+00]
[ 1.89503435e+00 8.29204000e+00]
[ 5.00532744e+00 -5.82802637e-01]
[ 4.60301350e+00 8.69766749e+00]
[ 5.52900088e+00 4.95127709e+00]
[ 6.20472535e+00 4.35795878e+00]
[ 4.68858491e+00 7.14741365e+00]
[ 4.79545561e+00 3.54278365e+00]
[ 5.31848288e+00 6.95726828e-01]
[ 6.96529501e+00 5.35816685e+00]
[ 5.86086381e+00 5.97469421e+00]
[ 8.78968675e+00 8.90663691e+00]
[ 6.94320762e+00 6.36811991e+00]
[ 6.10268308e+00 6.42324848e+00]
[ 4.34387736e+00 7.83076570e+00]
[ 4.74706675e+00 3.45843576e+00]
[ 2.54417825e+00 3.15600198e+00]
[ 3.13507157e+00 3.67472994e+00]
[ 7.62652664e+00 2.21122338e+00]
[ 3.18281292e+00 5.21185780e+00]
[ 4.67848112e+00 3.06854272e+00]
[ 3.13284936e+00 6.31481039e+00]
[ 6.77913466e+00 5.65283685e+00]
[ 6.45817705e+00 2.71668807e+00]
[ 8.67996763e+00 6.26043571e+00]
[ 3.86698467e+00 5.98262129e+00]
[ 4.91409761e+00 4.25099702e+00]
[ 5.49985909e+00 1.61981511e+00]
[ 7.37164557e+00 8.72201804e+00]
[ 3.59804373e+00 7.64847478e+00]
[ 6.32290967e+00 3.15598173e+00]
[ 4.54488816e+00 3.60181176e+00]
[ 4.87471015e+00 5.12370182e+00]
[ 2.66255506e+00 4.85719102e+00]
[ 3.46298665e+00 6.02462059e+00]
[ 5.39750511e+00 2.51352488e+00]
[ 6.73011886e+00 4.59106293e+00]
[ 8.29800376e+00 1.11366460e+01]
[ 4.46182961e+00 5.52692637e+00]
[ 1.16251428e+00 7.08217173e+00]
[ 2.76940432e+00 5.81681736e+00]
[ 2.55524223e+00 3.00331600e+00]
[ 3.77124714e+00 1.50325901e+00]
[ 4.64295497e+00 5.95584366e+00]
[ 6.23320212e+00 1.81797714e+00]
[ 7.23288685e+00 7.16411367e+00]
[ 5.88259074e+00 9.62674526e+00]
[ 5.27282038e+00 4.21553300e+00]
[ 4.78960605e+00 5.11707709e+00]
[ 6.81095126e+00 6.57568970e+00]
[ 5.55882008e+00 5.39221563e+00]
[ 5.54642748e+00 4.59790173e+00]
[ 5.32428345e+00 5.54821309e+00]
[ 5.65114595e+00 2.68389841e+00]
[ 5.90191128e+00 5.57571336e+00]
[ 6.54886911e+00 7.41356113e+00]
[ 6.09602786e+00 7.37529521e+00]
[ 4.00926987e+00 7.16707051e+00]
[ 7.38234261e+00 3.58562034e+00]
[ 7.20788751e+00 2.17266236e+00]
[ 6.52848033e+00 4.29439730e+00]
[ 5.34808008e+00 2.09178957e+00]
[ 6.23425159e+00 3.46112596e+00]
[ 4.99035389e+00 6.29393807e+00]
[ 7.36737431e+00 2.54202502e+00]
[ 5.39271755e+00 6.29159980e+00]
[ 3.29249630e+00 4.61292438e+00]
[ 7.32631075e+00 4.58955708e+00]
[ 4.34022738e+00 7.67202363e+00]
[ 6.22757782e+00 1.38739934e+00]
[ 5.83554916e+00 4.83547239e+00]
[ 4.08701171e+00 5.60826141e+00]
[ 5.02936613e+00 3.08369962e+00]
[ 7.09597369e+00 4.88711432e+00]
[ 9.31790173e+00 1.82691591e+00]
[ 5.98734663e+00 3.85392411e+00]
[ 5.06390556e+00 1.73243235e+00]
[ 5.12565758e+00 2.27244789e+00]
[ 3.41185976e+00 -8.54617804e-01]
[ 4.34725099e+00 4.52788596e+00]
[ 4.51207350e+00 1.83689776e+00]
[ 4.61823770e+00 1.29699054e+00]
[ 4.29299191e+00 4.10023650e-01]
[ 4.37114831e+00 2.05255823e+00]
[ 6.03257346e+00 2.30375332e+00]
[ 6.20683881e+00 3.39097330e-01]
[ 5.63364397e+00 6.44817380e-01]
[ 4.79495713e+00 2.84898747e+00]
[ 4.89285469e+00 6.77968965e-01]
[ 5.27460412e+00 -9.30886222e-02]
[ 5.93177231e+00 -1.55229360e+00]
[ 5.90194952e+00 1.86055703e+00]
[ 6.01426364e+00 1.66753331e+00]
[ 5.50514462e+00 1.91762736e+00]
[ 6.51817766e+00 1.12964577e-01]
[ 5.61626623e+00 -1.67850222e+00]
[ 6.72810355e+00 2.64675486e+00]
[ 5.62822716e+00 1.93331897e+00]
[ 5.33120237e+00 4.83451235e-01]
[ 3.27816276e+00 1.56765728e+00]
[ 4.55576849e+00 2.58858454e+00]
[ 4.88700799e+00 1.44908741e+00]
[ 5.14126174e+00 -3.61134467e-01]
[ 4.56701165e+00 2.43883003e+00]
[ 4.50130867e+00 9.71992704e-01]
[ 7.24299889e+00 -4.64902851e-01]
[ 3.69499733e+00 3.91542149e+00]
[ 3.83141395e+00 1.26820721e+00]
[ 5.68799842e+00 1.31126077e+00]
[ 5.21616080e+00 3.67638384e+00]
[ 3.98714924e+00 1.83536030e+00]
[ 5.93153517e+00 1.44332667e+00]
[ 5.45201009e+00 3.24812630e+00]
[ 5.04978180e+00 1.07664168e+00]
[ 4.75604453e+00 1.88210378e+00]
[ 6.52839551e+00 3.83492249e+00]
[ 4.88328368e+00 4.14903705e+00]
[ 6.05413343e+00 3.04169438e+00]
[ 3.14466677e+00 1.63021491e+00]
[ 5.25056521e+00 1.67826462e+00]
[ 5.16677247e+00 2.17417943e+00]
[ 4.12261097e+00 3.82667471e+00]
[ 3.52219974e+00 5.65897978e-01]
[ 5.12794748e+00 2.97331418e+00]
[ 6.66491803e+00 3.23684417e+00]
[ 4.28488745e+00 2.28723181e+00]
[ 4.91893063e+00 5.70970302e+00]
[ 5.16327388e+00 3.69974261e+00]
[ 6.33696005e+00 1.94447483e+00]
[ 2.84295503e+00 1.75263172e+00]
[ 6.09624047e+00 2.80767729e+00]
[ 5.24770964e+00 1.74324836e+00]
[ 4.68531183e+00 1.89037649e+00]
[ 6.04485571e+00 1.30268727e+00]
[ 3.78620262e+00 2.63862686e+00]
[ 5.61448871e+00 3.49479210e+00]
[ 6.46937141e+00 1.27241765e+00]
[ 2.35762118e+00 2.68930991e+00]
[ 5.04836986e+00 3.63653201e+00]
[ 4.31478879e+00 4.68609039e-01]
[ 3.68262500e+00 1.93185997e+00]
[ 4.86101331e+00 2.28554886e+00]
[ 6.68012871e+00 1.53197225e+00]
[ 2.63743851e+00 1.20868390e+00]
[ 4.04092216e+00 1.73058200e+00]
[ 2.04076115e+00 2.40432130e+00]
[ 5.74745311e+00 1.96416494e+00]
[ 3.58783013e+00 5.57580984e+00]
[ 5.00763375e+00 9.29724171e-02]
[ 6.56063357e+00 1.05917926e+00]
[ 4.01425518e+00 2.50631782e+00]
[ 5.27628370e+00 2.88521247e+00]
[ 5.30729888e+00 5.75453275e+00]
[ 6.29817988e+00 2.76204215e+00]
[ 2.92340500e+00 2.28167081e+00]
[ 3.64360221e+00 2.77760880e+00]
[ 4.87722097e+00 1.16698930e+00]
[ 3.82580688e+00 -2.97105981e-01]
[ 7.60747601e+00 1.92153986e-01]
[ 3.95614384e+00 3.16009718e+00]
[ 5.72570233e+00 -9.11561208e-01]
[ 4.87600240e+00 1.70723770e+00]
[ 6.10810534e+00 2.77347894e+00]
[ 5.03839430e+00 2.22796297e+00]
[ 5.35584888e+00 3.62306710e-01]
[ 5.08298641e+00 5.02366515e+00]
[ 4.60820002e+00 1.25413571e+00]
[ 4.76998986e+00 1.41829369e+00]
[ 4.94995956e+00 4.51339899e+00]
[ 6.83421072e+00 1.56866885e+00]
[ 4.60352739e+00 2.67854338e-01]
[ 3.82228605e+00 2.03396018e+00]
[ 5.35000179e+00 3.41994257e-02]
[ 5.24619427e+00 1.46969311e+00]]
LabelIndex= [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]
Y0= [ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1.
1. 1. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.
2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2. 2.]