Получить необработанный вывод из модели tensorflow js - PullRequest
0 голосов
/ 04 мая 2020

Я работаю через простую сверточную сеть с набором данных MNIST. Я хочу вручную указать программе go на каждом этапе процесса, ie итерацию через каждую эпоху и пакет, БЕЗ использования model.fit (я хочу лучше понять внутреннюю работу тензорного потока).

В настоящее время у меня есть:

let EPOCHS = 10;    
let batches = Math.floor(TRAIN_DATA_SIZE/BATCH_SIZE);

      for (let i = 0; i < EPOCHS; i++){
        for (let j = 0; i < batches; i++){
          let inputs = await getNextTrain(BATCH_SIZE,TRAIN_DATA_SIZE, data);

          let inputXs = inputs[0];
          let inputYs = inputs[1];

          let output = await model.evaluate(inputXs,inputYs);

для итерации через каждую эпоху и каждый пакет до traian. Однако model.evalutate () не возвращает выходные значения из сети, а только определенные потери / метрики. Есть ли специальный c metri c, который вы можете добавить, чтобы он возвращал выходные данные из сети

Я хочу, чтобы 10-элементный массив (или тензор) представлял то, что сеть думает о выходе для каждого входа (с использованием MNIST, чтобы сеть вероятностей считала, что каждый выход - это число 0-9)

1 Ответ

1 голос
/ 05 мая 2020

Вы можете вызвать model.fit внутри вашего внутреннего l oop и установить следующие параметры epoch=1 initial_epoch=i \\ So that it trains only the current epoch and batch. 'i' being outer loop variable. x=inputXs y=inputYs

Это обновит все веса в модели соответствующим образом. Затем вы можете вызвать model.evaluate, model.predict или model.get_layer, чтобы получить информацию, которую вы хотели бы видеть. Поскольку теперь у вас есть информация о каждом слое, вы можете независимо проверять их выходные значения, оценивая конкретный слой только по мере необходимости (обращаясь к строке, где вы указываете, чтобы увидеть, какие все вероятности ... c)

С обновленными изменениями:

let EPOCHS = 10;
let batches = Math.floor(TRAIN_DATA_SIZE/BATCH_SIZE);

  for (let i = 0; i < EPOCHS; i++){
    for (let j = 0; i < batches; i++){
      let inputs = await getNextTrain(BATCH_SIZE,TRAIN_DATA_SIZE, data);

      let inputXs = inputs[0];
      let inputYs = inputs[1];
      model.fit(..on above mentioned params..);

      model.evaluate() // To get loss and metric values.
      model.predict()  // To the final output of the model for input samples given.
      model.get_layer() //To get info about a particular layer and then retrieve the required info. Refer https://keras.io/layers/about-keras-layers/

      // For example to know the 1st layer's output : model.layers[0].output;

`

...