Невозможно загрузить последний термин смещения для инициализации слоев в кератах с массивом numpy - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть двухслойная нейронная сеть, которую я сгенерировал с помощью следующего кода:

def getModel():
model=Sequential()
model.add(Dense(4, activation='sigmoid', input_shape=(4,)))
model.add(Dense(1, activation='sigmoid'))
model.summary()
model.compile(loss='binary_crossentropy',optimizer='adam'  ,metrics=['accuracy'])
return model

Каждый слой имеет вектор весов и вектор смещения, и их формы / значения приведены, как в следующем примере:

type,length= <class 'numpy.ndarray'> (4, 4)
type,length= <class 'numpy.ndarray'> (4,)
[array([[-1.7419001 ,  1.2651203 ,  0.7003008 ,  1.416193  ],
   [ 0.44382066,  0.69123524,  1.5097519 , -0.8737072 ],
   [-0.554937  , -1.2773337 , -2.2347293 , -1.7490497 ],
   [-0.16615662, -2.6573877 , -1.0334445 , -0.30910656]],
  dtype=float32), array([ 4.2480081e-02, -2.1411135e+00, -1.1447016e+00,   4.8992259e-04],
  dtype=float32)]
<class 'list'>
<class 'list'>
type,length= <class 'numpy.ndarray'> (4, 1)
type,length= <class 'numpy.ndarray'> (1,)
[array([[ 1.5777158],
   [-1.3019325],
   [ 0.5813155],
   [ 1.4168079]], dtype=float32), array([-0.49027315], dtype=float32)]

Я пытаюсь инициализировать веса в зеркальной нейронной сети следующим образом:

test=np.load('WeightTest.npy')
LON1=[]
LON2=[]

k=0
for i in range(4):
    for j in range(4):
        L1[i,j]=test[k]
        k=k+1
for i in range(4):
   L2[i]=test[k]
    k=k+1
for i in range(4):
    L3[i,0]=test[k]
    k=k+1
L4=test[k]

LON1.append(L1)
LON1.append(L2)
LON2.append(L3)
LON2.append(L4)

testNN2=getModel()

testNN2.layers[0].set_weights(LON1)
testNN2.layers[1].set_weights(LON2)

Первый слой отображается правильно, но затем я получаю эту ошибку:

Traceback (most recent call last):
  File "weightLoadTester.py", line 65, in <module>
    testNN2.layers[1].set_weights(LON2)
  File "/home/chase/venv/lib/python3.6/site-packages/keras/engine    /base_layer.py", line 1057, in set_weights
'provided weight shape ' + str(w.shape))

ValueError: Форма веса слоя (1,) не совместима с предоставленной формой веса ()

Есть идеи, что здесь может пойти не так?Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...