TF JS пример tf.layers.globalAveragePooling2d () - PullRequest
1 голос
/ 08 мая 2020

Я создаю свой первый алгоритм в TF JS Layers, переводя это руководство https://colab.research.google.com/drive/1lWUGZarlbORaHYUZlF9muCgpPl8pEvve#scrollTo = nhYhP30NKlAp

Могу ли я получить пример globalAveragePooling2d в TF JS? Спасибо

this.model = tf.sequential();
this.model.add(tf.layers.conv2d({
  inputShape: [224, 224 , 3],
  kernelSize: 3,
  activation: 'relu',
  filters: 8
}));
this.model.add(
  tf.layers.maxPooling2d({poolSize: 3})
);
this.model.add(tf.layers.conv2d({
  inputShape: [16, 16],
  kernelSize: 3,
  activation: 'relu',
  filters: 8
}));
this.model.add(
  tf.layers.maxPooling2d({poolSize: 3})
);

// How to use this?
this.model.add(tf.layers.globalAveragePooling2d());

this.model.add(tf.layers.timeDistributed(
  {layer: tf.layers.dense({units: this.outputCount})}));
this.model.add(tf.layers.activation({activation: 'softmax'}));
this.model.compile({
  loss: 'categoricalCrossentropy',
  optimizer: 'sgd',
  metrics: ['accuracy']
});

1 Ответ

0 голосов
/ 09 мая 2020

tf.layers.timeDistributed нельзя использовать после tf.layers.globalAveragePooling2d для первого возврата 2-го слоя, тогда как последний ожидает, по крайней мере, 3-й слой. Их можно объединить, только если форма слоя была изменена ранее.

В настоящее время пустой объект необходимо передать в tf.layers.globalAveragePooling2d, поскольку он пытается получить доступ к arg.name. Это вызовет ошибку, если arg не является объектом

let model = tf.sequential();
model.add(tf.layers.conv2d({
  inputShape: [224, 224 , 3],
  kernelSize: 3,
  activation: 'relu',
  filters: 8
}));
model.add(
  tf.layers.maxPooling2d({poolSize: 3})
);
model.add(tf.layers.conv2d({
  inputShape: [16, 16],
  kernelSize: 3,
  activation: 'relu',
  filters: 8
}));
model.add(
  tf.layers.maxPooling2d({poolSize: 3})
);
// How to use this?
model.add(tf.layers.globalAveragePooling2d({}));

/*model.add(tf.layers.timeDistributed(
  {layer: tf.layers.dense({units: 3, activation: 'softmax'})}));*/
model.compile({
  loss: 'categoricalCrossentropy',
  optimizer: 'sgd',
  metrics: ['accuracy']
});

model.summary()
<html>
  <head>
    <!-- Load TensorFlow.js -->
    <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@1.7.2"> </script>
  </head>

  <body>
  </body>
</html>
...