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>