Функция активации для последнего слоя не может быть softmax
.softmax
используется при выполнении задачи классификации.Это не тот случай.
На официальном сайте tenorflow есть множество примеров.Глядя на ваши данные и метку, кажется, что вы перевернули их.Если вы хотите предсказать 32 из 16, 32 - это функция (данные в вашем случае), а 32 - метка. Здесь - это ссылка, чтобы понять разницу между объектами и метками.
Если вы хотите предсказать из 2 значений, то inputShape будет иметь Shape [2]
.Проще говоря, InputShape - это форма единственного элемента, который вы хотели бы предсказать.Если вы хотите предсказать из:
[1, 2]
, inputShape будет 2 [[2, 4, 5], [5, 6, 3]]
, inputShape будет [2, 3]
и т. Д. *
модель с inputShape [1]
const data = tf.tensor([1,2,3,4,5,6,7,8,9,10,11,12,13,14,15])
const label = tf.tensor([2,4,6,8,10,12,14,16,18,20,22,24,26,28,30])
const model = tf.sequential()
model.add(tf.layers.dense({inputShape : [1], units : 32, activation : 'relu'}))
model.add(tf.layers.dense({ units : 1}))
model.compile({
optimizer:'sgd',
loss:'meanSquaredError',
metrics:['accuracy']
})
function onBatchEnd (batch,logs){
// console.log(logs.acc)
}
model.fit(data, label, {
epochs: 50,
callbacks:{onBatchEnd}
}).then(info =>{
console.log(info.history.acc);
const prediction = model.predict(tf.tensor([16]))
prediction.print()
})
<html>
<head>
<!-- Load TensorFlow.js -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.14.1"> </script>
</head>
<body>
</body>
</html>
модель с inputShape [2]
const data = tf.tensor([[1,2],[3,4],[5,6],[7,8],[9,10],[11,12],[13,14]])
const label = tf.tensor([[2,4],[6,8],[10,12],[14,16],[18,20],[22,24],[26,28]])
const model = tf.sequential()
model.add(tf.layers.dense({inputShape : [2], units : 32, activation : 'relu'}))
model.add(tf.layers.dense({ units : 2}))
model.compile({
optimizer: tf.train.sgd(0.001),
loss:'meanSquaredError',
metrics:['accuracy']
})
function onBatchEnd (batch,logs){
// console.log(logs.acc)
}
model.fit(data, label, {
epochs: 50,
callbacks:{onBatchEnd}
}).then(info =>{
console.log(info.history.acc);
const prediction = model.predict(tf.tensor([[12, 13]]))
prediction.print()
})
<html>
<head>
<!-- Load TensorFlow.js -->
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest"> </script>
</head>
<body>
</body>
</html>