Модель Keras, прогнозирующая разные выходные данные для одного и того же ввода
Я использую stellargraph для изучения модели GraphSage. Это мой код:
num_samples = [10, 5]
unsupervised_samples = UnsupervisedSampler(G,nodes=G.nodes(),length=10, number_of_walks=5)
# Generate training data for the encoder model
generator = GraphSAGELinkGenerator(G, batch_size=512, num_samples=num_samples)
train_gen = generator.flow(unsupervised_samples)
graphsage = GraphSAGE(layer_sizes=[32,64], generator=generator, bias=True, dropout=0.0, normalize="l2") # encoder, produces embeddings
x_inp, x_out = graphsage.in_out_tensors()
pred = link_classification(output_dim=1, output_act="sigmoid", edge_embedding_method="ip")(x_out)
model = keras.Model(x_inp, pred)
model.compile(optimizer=Adam(lr), loss=binary_crossentropy, metrics=[binary_accuracy])
history = model.fit(generator, epochs=15, verbose=0, workers=4, shuffle=True)
После обучения модели классификации ссылок ее можно использовать для получения вложений узлов в другой граф, который мы назовем
node_ids = ['123', '456', '789']
embedding_model = keras.Model(x_in[0::2], x_out[0])
node_gen = GraphSAGENodeGenerator(G2, batch_size=512, num_samples=num_samples).flow(node_ids)
embeddings = embedding_model.predict(node_gen)
Странно то, что если я запущу последнюю строку несколько раз, я получу разные прогнозы, даже если и модель, и входные данные одинаковы. Выходные массивы содержат значения, которые различаются при нескольких запусках, но в большинстве случаев они очень похожи. Однако мне это кажется странным, и мне интересно, не допустил ли я какую-нибудь ошибку. Любая помощь будет оценена по достоинству. Более того, документы не объясняют, почему модель определяется как