簡體   English   中英

keras-gcn 擬合模型 ValueError

[英]keras-gcn fit model ValueError

我正在使用這個庫創建一個模型來學習圖形。 這是代碼(來自存儲庫):

import numpy as np

from keras_gcn.backend import keras
from keras_gcn import GraphConv

# feature matrix
input_data = np.array([[[0, 1, 2],
                        [2, 3, 4],
                        [4, 5, 6],
                        [7, 7, 8]]])

# adjacency matrix
input_edge = np.array([[[1, 1, 1, 0],
                        [1, 1, 0, 0],
                        [1, 0, 1, 0],
                        [0, 0, 0, 1]]])

labels = np.array([[[1],
                    [0],
                    [1],
                    [0]]])

data_layer = keras.layers.Input(shape=(None, 3), name='Input-Data')
edge_layer = keras.layers.Input(shape=(None, None), dtype='int32', name='Input-Edge')
conv_layer = GraphConv(units=4, step_num=1, kernel_initializer='ones', 
                       bias_initializer='ones', name='GraphConv')([data_layer, edge_layer])
model = keras.models.Model(inputs=[data_layer, edge_layer], outputs=conv_layer)
model.compile(optimizer='adam', loss='mae', metrics=['mae'])

model.fit([input_data, input_edge], labels)

但是,當我運行代碼時,出現以下錯誤:

ValueError: Error when checking target: expected GraphConv to have 3 dimensions, but got array with shape (4, 1)

而標簽的形狀是(1, 4, 1)

您應該使用 onehot-encoder 對標簽進行編碼,如下所示:

lables = np.array([[[0, 1],
                    [1, 0],
                    [0, 1],
                    [1, 0]]])

此外, GraphConv層中的單元數應等於唯一標簽的數量,在您的情況下為 2。

我認為問題是 edge_layer 和 data_layer 的形狀不匹配。

當你使用函數keras.layers.Input時,你給 data_layer 一個shape=(None, 3)的形狀,然后你給edge_layer一個shape=(None, None)的形狀

匹配形狀,讓我知道結果如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM