hagees1991
@hagees1991

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Ising模型の相転移をディープラーニングで予測する方法

解決したいこと

Python3を使って2次元Ising模型の相転移をディープラーニングで予測するという数値計算を行っています。
メトロポリス法(モンテカルロ法)を用いてスピン配位を計算するということまでは完成しています。
そのスピン配位をどのようにニューラルネットワークに入力すればいいのかというところで困っています。
30X30で作成したものを900次元のベクトルにするというところは教科書に書いてあったのですが、結果が望ましいものになりません。
どのように書き換える必要があるでしょうか?

1.メトロポリス法を用いて0<T<2、2.5<T<10までのスピン配位を10000データ生成する
2.そのスピン配位のうち、2000個にラベルを付与する
3.2<T<2.5のスピン配位も10000個用意する
4.ラベルの付与されていないスピン配位を訓練データ、ラベルの付与されているスピン配位を検証データとしてDeeplearningを行う

という計算を考えています。

発生している問題・エラー

y_train のクラス分布: [  455 25545]
y_val のクラス分布: [2000 2000]

/usr/local/lib/python3.11/dist-packages/keras/src/layers/activations/leaky_relu.py:41: UserWarning: Argument `alpha` is deprecated. Use `negative_slope` instead.
  warnings.warn(

Epoch 1/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 5.0802 - val_loss: 1.3504
Epoch 2/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1618 - val_loss: 1.5112
Epoch 3/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1612 - val_loss: 1.2815
Epoch 4/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - loss: 0.1582 - val_loss: 1.4177
Epoch 5/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1586 - val_loss: 1.4829
Epoch 6/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1580 - val_loss: 1.4252
Epoch 7/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - loss: 0.1602 - val_loss: 1.2539
Epoch 8/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1599 - val_loss: 1.2973
Epoch 9/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1572 - val_loss: 1.4094
Epoch 10/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 8s 7ms/step - loss: 0.1594 - val_loss: 1.4347
Epoch 11/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1609 - val_loss: 1.3770
Epoch 12/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1592 - val_loss: 1.4082
Epoch 13/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 7s 7ms/step - loss: 0.1592 - val_loss: 1.4177
Epoch 14/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 8s 4ms/step - loss: 0.1569 - val_loss: 1.2844
Epoch 15/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - loss: 0.1610 - val_loss: 1.2984
Epoch 16/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1602 - val_loss: 1.3509
Epoch 17/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 0.1591 - val_loss: 1.3466
Epoch 18/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - loss: 0.1587 - val_loss: 1.3564
Epoch 19/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - loss: 0.1586 - val_loss: 1.2768
Epoch 20/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - loss: 0.1591 - val_loss: 1.1798
Epoch 21/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1590 - val_loss: 1.4716
Epoch 22/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1567 - val_loss: 1.3670
Epoch 23/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - loss: 0.1599 - val_loss: 1.4093
Epoch 24/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - loss: 0.1590 - val_loss: 1.4798
Epoch 25/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1619 - val_loss: 1.3705
Epoch 26/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1563 - val_loss: 1.3631
Epoch 27/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 0.1598 - val_loss: 1.3210
Epoch 28/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 0.1596 - val_loss: 1.3421
Epoch 29/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - loss: 0.1602 - val_loss: 1.3562
Epoch 30/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1546 - val_loss: 1.3331
Epoch 31/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1605 - val_loss: 1.3795
Epoch 32/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1580 - val_loss: 1.3759
Epoch 33/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 6ms/step - loss: 0.1600 - val_loss: 1.2928
Epoch 34/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1592 - val_loss: 1.4183
Epoch 35/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 0.1578 - val_loss: 1.2002
Epoch 36/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 6s 7ms/step - loss: 0.1585 - val_loss: 1.2295
Epoch 37/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1575 - val_loss: 1.3794
Epoch 38/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1585 - val_loss: 1.3212
Epoch 39/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 7s 6ms/step - loss: 0.1612 - val_loss: 1.2193
Epoch 40/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1611 - val_loss: 1.3949
Epoch 41/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1619 - val_loss: 1.4550
Epoch 42/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 6s 5ms/step - loss: 0.1558 - val_loss: 1.2434
Epoch 43/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - loss: 0.1589 - val_loss: 1.3652
Epoch 44/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - loss: 0.1599 - val_loss: 1.3468
Epoch 45/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 3s 4ms/step - loss: 0.1586 - val_loss: 1.4620
Epoch 46/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 0.1591 - val_loss: 1.2842
Epoch 47/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 5s 4ms/step - loss: 0.1599 - val_loss: 1.4654
Epoch 48/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - loss: 0.1599 - val_loss: 1.2072
Epoch 49/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 5ms/step - loss: 0.1603 - val_loss: 1.3465
Epoch 50/50
813/813 ━━━━━━━━━━━━━━━━━━━━ 4s 4ms/step - loss: 0.1624 - val_loss: 1.4487

image.png

該当するソースコード

"""
2次元イジングモデルのメトロポリス法によるモンテカルロシミュレーションテスト用

"""


import numpy as np
from sklearn.semi_supervised import LabelPropagation
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, LeakyReLU
from sklearn.model_selection import train_test_split
import numpy as np
import random as rnd

from random import random, randrange
import numpy as np
import matplotlib.pyplot as plt

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Activation, LeakyReLU
from tensorflow.keras import optimizers
from tensorflow.keras import backend as K
import collections



# 与えられたスピン配置alisに対してエネルギーを計算する関数を定義
def Ecalc2(alis2, Nx,Ny):
    dum=0
    for i in range(-1,Nx):
        for j in range(0,Ny):

            l=i
            m=j

            if l==-1:
                l=Nx
            if l == Nx:
                l=0
            if m ==-1:
                m=Ny
            if m== Ny:
                m=0

            ll=i+1
            if ll == Nx:
                ll=0
            dum+=alis2[l, m]*alis2[ll, m]

    for i in range(0,Nx):
        for j in range(-1,Ny):

            l=i
            m=j

            if l==-1:
                l=Nx
            if l == Nx:
                l=0
            if m ==-1:
                m=Ny
            if m== Ny:
                m=0

            mm=j+1
            if mm == Ny:
                mm=0
            dum+=alis2[l, m]*alis2[l, mm]

    return dum



# ランダムな初期状態生成:  アップスピン数とダウンスピン数は同じ。M=0
def Initial_rand(s, Nx,Ny):
    NN=int(Nx*Ny/2)
    for k in range(NN):
        i=randrange(Nx-1) # 1からNまででランダムな数が選ばれる
        j=randrange(Ny-1) # 1からNまででランダムな数が選ばれる
        s[i,j]=-1*s[i,j]

    return s


Nx= 30  # x方向に100分割
Ny =30  # y方向に100分割
Ntot=Nx*Ny


KBT_lis=np.linspace(0.001,2, 201) # 温度を0.001から2まで(kBT単位で)201刻みで変動させる。
for KBT in KBT_lis:


    J = 1 # スピン結合定数
    B = 0.0 # 外部磁場
    steps =20000 # MC ステップ


    # 初期状態生成: ランダムスピン配置
    s= np.ones([Nx,Ny], int)  # Nスピン分の, 量子数(Sz = +1 or -1)を全部1としてセット
    s=Initial_rand(s, Nx,Ny)

    E = -J* Ecalc2(s, Nx,Ny) -B*np.sum(s) #(初期)エネルギーを計算。
    E2 = E**2  # E^2を格納

    # セットアップ
    st_mag = []  #

    # メイン
    for k in range(steps):
        i=randrange(Nx-1) # 0からN-1まででランダムな数が選ばれる
        j=randrange(Ny-1) # 0からN-1まででランダムな数が選ばれる

        s_trial=s.copy()
        s_trial[i,j]= -1*s[i,j]
        delta_E=2*s_trial[i,j]*-1*J*(s[i+1,j]+s[i-1,j]+s[i,j+1]+s[i,j-1])-B*(s_trial[i,j]-s[i,j])

        E_trial =E+  delta_E

        #メトロポリス法による状態更新
        if E_trial < E :
            s = s_trial
            E = E_trial
        else :
            if random() < np.exp(-(delta_E)/KBT):
                s = s_trial
                E = E_trial

        st_mag.append(s)

st_mag =  st_mag[10000:]
# st_mag のインデックスを取得
all_indices = set(range(len(st_mag)))
val_indices = set(rnd.sample(list(all_indices), 2000))

# 選ばれた 2000 個のデータと残りの 8000 個のデータに分割
st_mag_val = [st_mag[i] for i in val_indices]
remaining_rnd_st_mag = [st_mag[i] for i in all_indices - val_indices]

# st_mag_val の各スピン配位にラベル (1, 0) を付与
labeled_st_mag = [(spin_config, (1, 0)) for spin_config in st_mag_val]

KBT_lis=np.linspace(2.5,10, 201) # 温度を0.001から2まで(kBT単位で)201刻みで変動させる。
for KBT in KBT_lis:


    J = 1 # スピン結合定数
    B = 0.0 # 外部磁場
    steps =20000 # MC ステップ


    # 初期状態生成: ランダムスピン配置
    s= np.ones([Nx,Ny], int)  # Nスピン分の, 量子数(Sz = +1 or -1)を全部1としてセット
    s=Initial_rand(s, Nx,Ny)

    E = -J* Ecalc2(s, Nx,Ny) -B*np.sum(s) #(初期)エネルギーを計算。
    E2 = E**2  # E^2を格納

    # セットアップ
    pa_mag = []  #

    # メイン
    for k in range(steps):
        i=randrange(Nx-1) # 0からN-1まででランダムな数が選ばれる
        j=randrange(Ny-1) # 0からN-1まででランダムな数が選ばれる

        s_trial=s.copy()
        s_trial[i,j]= -1*s[i,j]
        delta_E=2*s_trial[i,j]*-1*J*(s[i+1,j]+s[i-1,j]+s[i,j+1]+s[i,j-1])-B*(s_trial[i,j]-s[i,j])

        E_trial =E+  delta_E

        #メトロポリス法による状態更新
        if E_trial < E :
            s = s_trial
            E = E_trial
        else :
            if random() < np.exp(-(delta_E)/KBT):
                s = s_trial
                E = E_trial

        pa_mag.append(s)

pa_mag =  pa_mag[10000:]
# pa_mag のインデックスを取得
all_indices = set(range(len(pa_mag)))
val_indices = set(rnd.sample(list(all_indices), 2000))

# 選ばれた 2000 個のデータと残りの 8000 個のデータに分割
pa_mag_val = [pa_mag[i] for i in val_indices]
remaining_rnd_pa_mag = [pa_mag[i] for i in all_indices - val_indices]

# pa_mag_val の各スピン配位にラベル (0, 1) を付与
labeled_pa_mag = [(spin_config, (0, 1)) for spin_config in pa_mag_val]

KBT_lis=np.linspace(2,2.5, 201) # 温度を0.001から2まで(kBT単位で)201刻みで変動させる。
for KBT in KBT_lis:


    J = 1 # スピン結合定数
    B = 0.0 # 外部磁場
    steps =20000 # MC ステップ


    # 初期状態生成: ランダムスピン配置
    s= np.ones([Nx,Ny], int)  # Nスピン分の, 量子数(Sz = +1 or -1)を全部1としてセット
    s=Initial_rand(s, Nx,Ny)

    E = -J* Ecalc2(s, Nx,Ny) -B*np.sum(s) #(初期)エネルギーを計算。
    E2 = E**2  # E^2を格納

    # セットアップ
    un_mag = []  #

    # メイン
    for k in range(steps):
        i=randrange(Nx-1) # 0からN-1まででランダムな数が選ばれる
        j=randrange(Ny-1) # 0からN-1まででランダムな数が選ばれる

        s_trial=s.copy()
        s_trial[i,j]= -1*s[i,j]
        delta_E=2*s_trial[i,j]*-1*J*(s[i+1,j]+s[i-1,j]+s[i,j+1]+s[i,j-1])-B*(s_trial[i,j]-s[i,j])

        E_trial =E+  delta_E

        #メトロポリス法による状態更新
        if E_trial < E :
            s = s_trial
            E = E_trial
        else :
            if random() < np.exp(-(delta_E)/KBT):
                s = s_trial
                E = E_trial

        un_mag.append(s)

un_mag =  un_mag[10000:]

val_mag = labeled_st_mag + labeled_pa_mag
tra_mag = remaining_rnd_st_mag + remaining_rnd_pa_mag + un_mag

#print(val_mag[:2])
#print(tra_mag[:2])


# 損失関数の定義
def custom_loss_with_l2(y_true, y_pred):
    # スパース・クロスエントロピー損失
    cross_entropy_loss = K.sparse_categorical_crossentropy(y_true, y_pred)

    # モデルの重みを取得して L2 正則化項を計算
    l2_lambda = 0.1  # L2正則化の係数
    l2_loss = sum([K.sum(K.square(w)) for w in model.trainable_weights])

    # クロスエントロピー損失 + L2正則化項
    return cross_entropy_loss + l2_lambda * l2_loss



# 1. データ整形
# 訓練データ (tra_mag)
x_train = np.array([config.flatten() for config in tra_mag])  # スピン配列をフラット化
y_train = np.array([1 if config.mean() > 0 else 0 for config in tra_mag])

# 検証データ (val_mag)
x_val = np.array([config[0].flatten() for config in val_mag])  # スピン配列をフラット化
y_val = np.array([config[1][0] for config in val_mag])  # ラベル (1, 0) の第1要素を使用

print("y_train のクラス分布:", np.bincount(y_train))
print("y_val のクラス分布:", np.bincount(y_val))

"""
# データの形状確認
print("訓練データ形状:", x_train.shape, "訓練ラベル形状:", y_train.shape)
print("検証データ形状:", x_val.shape, "検証ラベル形状:", y_val.shape)

print(x_val[2:])
print(x_train[2:])
print(y_val[2:])
print(y_train[2:])
"""

# 2. ニューラルネットワークの構築
model = Sequential()
model.add(Dense(128, input_shape=(900,)))  # 入力次元は 900
model.add(LeakyReLU(alpha=0.2))  # 活性化関数
model.add(Dense(64))
model.add(LeakyReLU(alpha=0.2))
model.add(Dense(2, activation="softmax"))  # 出力層

# モデルのコンパイル
model.compile(loss=custom_loss_with_l2, optimizer="adam")

# 3. 学習
history = model.fit(
    x_train, y_train,
    epochs=50,
    batch_size=32,
    validation_data=(x_val, y_val)
)

# 4. 学習の可視化
plt.figure(figsize=(12, 5))

# 損失関数のプロット
plt.subplot(1, 2, 1)
plt.plot(history.history['loss'], label='Training Loss')
plt.plot(history.history['val_loss'], label='Validation Loss')
plt.title('Loss Function Over Epochs')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()

plt.tight_layout()
plt.show()

自分で試したこと

私は物理学科の学生で、そこまでプログラミングの技術があるわけでなく、何が間違っているのかわかっていません。
ChatGPTにかなり頼っています。
ChatGPTに聞いたところ、私がやろうとしていることは半教師あり学習であると言われて、実際に半教師あり学習のアルゴリズムでプログラムを作ってもらいましたが、それでも特にいい結果生えられませんでした。
半教師あり学習を試してみたいと思いますが、サイト数が少なくどのように実装したらいいかわからない状態です。

val_mag[:2]
tra_mag[:2]
val_mag[-2:]
tra_mag[-2:]
を出力すると以下のようになっていたので、この部分は理想通りの結果が求められています。

[(array([[ 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, -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,  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],
       [ 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,  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,  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],
       [ 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,  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,  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]]), (1, 0)), (array([[ 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, -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,  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],
       [ 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,  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,  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],
       [ 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,  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,  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]]), (1, 0))]

[array([[ 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, -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,  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],
       [ 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,  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,  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],
       [ 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,  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,  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]]), array([[ 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, -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,  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],
       [ 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,  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,  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],
       [ 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,  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,  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]])]

[(array([[ 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,  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,  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],
       [ 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, -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,  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],
       [ 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,  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, -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]]), (0, 1)), (array([[ 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,  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,  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],
       [ 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, -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,  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],
       [ 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,  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, -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]]), (0, 1))]

[array([[ 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,  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,  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],
       [ 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,  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,  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],
       [ 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,  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,  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]]), array([[ 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,  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,  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],
       [ 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,  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,  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],
       [ 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,  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,  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]])]
0

1Answer

こんにちは。物理の知識がなく問題自体の意味は分からないのですが。エラーメッセージから見るに、ライブラリのバージョン違いでコードが動かなくなっているのではないかと思いました。

以下のようなコードが、検索では見つかったので、まずは真似して置き換えても良いのではないかと思いました。
model.add(LeakyReLU(negative_slope=0.2))

0Like

Your answer might help someone💌