Я строю нейронную сеть, в которой у меня есть две категориальные особенности, которые проходят через слой внедрения каждый независимо, а затем их внедрения безуспешно объединяются.
x1 = np.random.randint(24, size = (20,1))
x2 = np.random.randint(100, size = (20,1))
X_list = [x1,x2]
label_array = np.random.randint(2,size = (20,1))
input1 = Input(shape=(1,))
output1 = Embedding(input_dim = 25, output_dim = 10)(input1)
output1 = Reshape(target_shape=(10,))(output1)
input2 = Input(shape=(1,))
output2 = Embedding(input_dim = 101, output_dim = 10)(input2)
output2 = Reshape(target_shape=(10,))(output2)
inputs = [input1, input2]
output_embeddings = [ output1, output2]
output_model = Concatenate()(output_embeddings)
output_model = Dense(500, activation='relu')(output_model)
output_model = Dense(1, activation='sigmoid')(output_model)
model = Model(inputs = input_model, outputs = output_model)
model.compile(optimizer = 'adam', loss='binary_crossentropy')
model.predict(X_list)
Когда переменные input_dim (размеры словаря) равны
model.predict (X_list) возвращает вектор, а не ошибку, но если input_dim в слое внедрения имеет разные размеры, как вНапример, я получаю эту ошибку: InvalidArgumentError: indices [1,0] = 66 отсутствует в [0, 25) [[{{узел embedding_23 / embedding_lookup}} = GatherV2 [Taxis = DT_INT32, Tindices = DT_INT32, Tparams = DT_FLOAT, _device = "/ job: localhost / replica: 0 / task: 0 / device: CPU: 0"] (embedding_23 / embeddings / read, embedding_23 / Cast, embedding_23 / embedding_lookup / axis)]]
Я предполагаю, что словари должны быть одинакового размера, но что делать, если их нет?