Форма ввода Keras, простой массив списков ввода - PullRequest
0 голосов
/ 09 февраля 2019

, где каждый массив ([x1, x2, x3, ..., x15]) представляет один вход

[array([0.        , 0.08333333, 0.08333333, 0.08333333, 0.08333333,
   0.08333333, 0.08333333, 0.        , 0.08333333, 0.08333333,
   0.08333333, 0.08333333, 0.08333333, 0.08333333, 0.        ])
 array([0.04166667, 0.10416667, 0.10416667, 0.08333333, 0.        ,
       0.10416667, 0.10416667, 0.02083333, 0.10416667, 0.08333333,
       0.        , 0.        , 0.125     , 0.125     , 0.        ])
 array([0.04166667, 0.        , 0.125     , 0.10416667, 0.02083333,
       0.125     , 0.125     , 0.02083333, 0.10416667, 0.        ,
       0.02083333, 0.02083333, 0.14583333, 0.14583333, 0.        ])
 ...
 array([0.4375    , 0.0625    , 0.        , 0.        , 0.        ,
       0.0625    , 0.        , 0.25      , 0.        , 0.08333333,
       0.04166667, 0.02083333, 0.        , 0.04166667, 1.        ])
 array([0.45833333, 0.        , 0.02083333, 0.02083333, 0.02083333,
       0.08333333, 0.        , 0.25      , 0.        , 0.08333333,
       0.04166667, 0.02083333, 0.        , 0.        , 1.        ])
 array([0.5       , 0.        , 0.        , 0.02083333, 0.02083333,
       0.        , 0.02083333, 0.27083333, 0.02083333, 0.10416667,
       0.0
       4166667, 0.        , 0.        , 0.        , 1.        ])]

, входящий в модель

model = Sequential()
model.add(Dense(15, input_dim=15, kernel_initializer='uniform', activation='relu'))
model.add(Dense(16, kernel_initializer='uniform', activation='relu'))
model.add(Dense(14, kernel_initializer='uniform', activation='sigmoid'))
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

жалуется:

ValueError: Error when checking input: expected dense_1_input to have shape (15,) but got array with shape (1,)

Как изменить форму входных данных для соответствия этой модели?

1 Ответ

0 голосов
/ 09 февраля 2019

Он не хотел, чтобы внутри был простой массив, это должны быть списки внутри, но массив только на самом верхнем уровне

X_train = np.array([x.tolist() for x in df['board_in'].values])
y_train = df['target']
y_train = np.array([y for y in df['target'].values])
...