У меня была аналогичная проблема с входным тензором для моего предсказателя. Я расширил измерение на единицу, и проблема была решена. Сначала я предлагаю запустить предиктор в python. Это помогает определить размер входного тензора, который вы передаете предиктору. Затем повторите точный размер в C ++. Кроме того, на основе вашего фрагмента кода я не уверен, как вы определяете входные данные для метода Run. В моем коде я определил следующее:
std::vector<std::pair<std::string, tensorflow::Tensor>> input = {
{"input_1", input_tensor }
};
, где «input_1» - это имя моего входного слоя. Надеюсь, это поможет.
WITH
не включало personA
, поэтому переменная была удалена. WITH
даже не нужны в вашем запросе и поэтому должны быть опущены (для ясности, если ничего больше). MATCH
, которое напрямую использует имена переменных personA
и personB
. WHERE
позволит дважды обрабатывать одну и ту же пару Person
узлов (в обратном порядке). Вы можете убедиться, что одна и та же пара обрабатывается только один раз, используя, например, ID(personA) < ID(personB)
вместо personA <> personB
. CREATE UNIQUE
устарело, и вместо этого следует использовать MERGE
. MERGE
не требует, чтобы вы указали направленность отношений - он может автоматически назначить их для вас. Это уместно, если вы хотите рассматривать отношения как ненаправленные (что верно в вашем случае). Вот запрос, который заботится обо всех вышеупомянутых элементах:
MATCH (personA:Person), (personB:Person)
WHERE ID(personA) < ID(personB) AND personA.born = personB.born
MERGE (personA)-[:HAS_SAME_AGE {sameAge: "Has same age"}]-(personB)
Примечание: Вы можете задать sameAge
логическое значение (true
или false
) , Или, что еще лучше, просто полностью исключите sameAge
, поскольку связь HAS_SAME_AGE
будет существовать только в том случае, если два связанных узла в любом случае будут иметь одинаковый возраст.
Этот запрос создаст пустые узлы и создаст отношения между пустым узлом и данным узлом.
Проблема здесь в том, что « personA » не входит в сферу «CREATE UNIQUE».
Вам необходимо передать его вместе с «personB» в секунде с предложением «[».
CREATE UNIQUE не поддерживается в новых версиях Cypher с использованием MERGE вместо.
MATCH (a:Person)
with a AS personA
MATCH (b:Person)
with personA, b AS personB
WHERE personA.born = personB.born AND personA <> personB
CREATE UNIQUE (personA)-[:HAS_SAME_AGE {sameAge: "Has same age"}]->(personB)