При использовании данных категории с горячим кодированием и числовых переменных, как вы комбинируете эти различные типы данных для соответствия модели?
Ранее использовали TensorflowJS , и это простоМой сторонний проект, который я использую, чтобы узнать больше о тф Google, я использовал только горячо закодированные данные для значений функции и метки.Все элементы были той же формы, что и этикетки.Я просто строю модель прогнозирования для функций, которые имеют горячее кодирование имен, таких как
"name1" = [1,0,0]
"name2" = [0,1,0]
...
, с результатами, которые также имеют горячее кодирование, такие как
"outcome1" = [1,0,0]
"outcome2" = [0,1,0]
...
Это сработало довольнону, и я смог построить прекрасную модель, которая при тестировании работала довольно хорошо.
Однако, как только я захотел немного проработать особенности и использовать непрерывно числовую часть данных, я не мог понять, как объединить категорию инепрерывные данные.
То, что я хочу сделать, это использовать дополнительный, не относящийся к категории фрагмент переменных данных.Таким образом, мои функции будут
"name1" = [1,0,0]
"name2" = [0,1,0]
variablePieceOfInformation = 10
Изначально я не вижу пути в тензорном потоке совместного использования этих фрагментов данных.
Изначально все мои функции были одинакового размера с одним горячим кодированием названий категорийи мои ярлыки были одним из самых закодированных результатов, которые я хотел предсказать.
Теперь я хочу использовать дополнительную часть информации, которая постоянно изменяется, и я не вижу примеров того, как объединить эти два типа.
То, что я ожидал, это то, что может быть способ объединения категорий (закодированных в однокадровом коде) и непрерывно изменяемых данных.
my git repo
import getTrainingData, { TrainingData, getNames } from "./getModelData";
import save from "./saveModel";
import { numAllTimeTeams } from "@gvhinks/epl-constants";
const createModel = async (): Promise<tf.Sequential> => {
const model: tf.Sequential = tf.sequential({
name: "predict"
});
model.add(tf.layers.dense({inputShape: [2,numAllTimeTeams], units: 3, useBias: true, name:"teams_layer"}));
model.add(tf.layers.flatten());
model.add(tf.layers.dense({units: 3, useBias: true, name: "results_layer"}));
model.compile({optimizer: tf.train.adam(0.001), loss: 'meanSquaredError'});
const { labelValues, featureValues } = await getTrainingData();
const numTeamsInLeague: number = (featureValues[0][0]).length;
const featureTensors = tf.tensor3d(featureValues, [featureValues.length, 2, numTeamsInLeague], 'int32');
const labelTensors = tf.tensor2d(labelValues, [labelValues.length, 3], 'int32');
const fitArgs = {
batchSize: 500,
epochs: 200,
verbose: 0
};
await model.fit(featureTensors, labelTensors, fitArgs);
return model;
};
export { getTrainingData, createModel as default, TrainingData, getNames, save };```