نحوه رفع “خطا هنگام بررسی هدف” در tensorflow.js

هنگام کار با tensorflow.js ، مواجهه با خطاهای مربوط به ابعاد تانسور غیر معمول نیست. یک خطای ، همانطور که توضیح داده اید ، زمانی اتفاق می افتد که ابعاد مورد انتظار خروجی مدل شما با شکل برچسب های ارائه شده (اهداف) در طول آموزش مطابقت ندارد. بیایید این موضوع را بیشتر مورد بررسی قرار دهیم و راه حل هایی برای حل آن ارائه دهیم.
درک خطا
پیام خطایی که دریافت کردید عبارتند از: Error when checking target: expected dense_Dense2 to have 2 dimension(s) but got array with shape 2,5,2
بشر این نشان می دهد که لایه خروجی مدل شما از آنچه که دریافت کرده بود ، شکل متفاوتی برای اهداف خود داشت. به عبارت ساده تر ، ساختار مدل با شکل داده های آموزش شما همگام نیست.
چرا این اتفاق می افتد
در مدل شما ، آخرین لایه متراکم برای خروجی یک تانسور 5 بعدی پیکربندی شده است ، اما شما هدف خود را ساختار داده اید (ys
) به عنوان یک تانسور سه بعدی با شکل [2, 5, 2]بشر این عدم تطابق منجر به خطایی می شود که شما با آن روبرو شده اید. در اصل ، tensorflow.js به شما این امکان را می دهد که نمی تواند شکل ها را پردازش کرده و آموزش را مطابق انتظار انجام دهد.
راه حل گام به گام
برای حل این مسئله ، باید لایه خروجی مدل خود را تنظیم کنید تا با شکل داده های هدف خود مطابقت داشته باشد. در اینجا چگونه می توانید این کار را انجام دهید:
مرحله 1: شکل داده های خود را مرور کنید
اشکال تانسرهای ورودی و هدف خود را بررسی کنید تا بفهمید چه تنظیماتی لازم است:
const xs = tf.tensor2d(value_x, [2, 5]); // Shape: [2, 5]
const ys = tf.tensor3d(value_y, [2, 5, 2]); // Shape: [2, 5, 2]
در اینجا xs
یک تانسور 2D با شکل است [2, 5] نمایندگی دو نمونه ، در حالی که ys
یک تانسور سه بعدی با شکل است [2, 5, 2]بشر
مرحله 2: لایه خروجی مدل را تنظیم کنید
پس از ys
سه بعد دارد ، شما باید مطمئن شوید که آخرین لایه مدل شما با این ابعاد مطابقت دارد. در اینجا نحوه اصلاح مدل آورده شده است:
const model = tf.sequential();
model.add(tf.layers.dense({
inputShape: [5],
units: 10
}));
model.add(tf.layers.dense({
units: 2 // Change this to match the last dimension of ys
}));
این تنظیم تضمین می کند که خروجی با شکل آخرین بعد تانسور هدف شما مطابقت داشته باشد ys
، که است [2]بشر
مرحله 3: مدل را کامپایل و متناسب کنید
اکنون می توانید همانطور که در ابتدا در نظر گرفته شده است ، مدل را کامپایل و متناسب کنید:
model.compile({
loss: 'meanAbsoluteError',
optimizer: 'sgd',
metrics: ['mse']
});
model.fit(xs, ys, {
epochs: 10,
callbacks: {
onEpochEnd: (epoch, log) => {
console.log(epoch, '- ', log.loss);
}
}
});
مثال کد نهایی
در اینجا نحوه به نظر می رسد کد به روز شده کامل شما ممکن است:
const tf = require('@tensorflow/tfjs');
let log = console.log;
let value_x = [
[1, 1, 1, 1, 1],
[1, 1, 1, 1, 0]
];
let value_y = [
[
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0]
],
[
[1, 0],
[1, 0],
[1, 0],
[1, 0],
[1, 0]
]
];
const model = tf.sequential();
model.add(tf.layers.dense({
inputShape: [5],
units: 10
}));
model.add(tf.layers.dense({
units: 2 // Adjusted from 5 to 2
}));
model.compile({
loss: 'meanAbsoluteError',
optimizer: 'sgd',
metrics: ['mse']
});
const xs = tf.tensor2d(value_x, [2, 5]);
const ys = tf.tensor3d(value_y, [2, 5, 2]);
xs.print();
ys.print();
log();
model.fit(xs, ys, {
epochs: 10,
callbacks: {
onEpochEnd: (epoch, log) => {
console.log(epoch, '- ', log.loss);
}
}
}).then(() => {
const a = model.predict(tf.tensor2d([1, 1, 1, 0, 0], [1, 5])).arraySync();
log(a);
});
سوالات متداول
tensorflow.js چیست؟
tensorflow.js یک کتابخانه برای آموزش و استقرار مدل های یادگیری ماشین در JavaScript است. این برنامه برای برنامه های سمت مشتری و سمت سرور طراحی شده است ، و به توسعه دهندگان این امکان را می دهد تا برنامه های قدرتمند یادگیری ماشین را در مرورگر یا Node.js. ایجاد کنند.
چرا خطای شکل پیدا کردم؟
یک خطای شکل به طور معمول هنگامی رخ می دهد که ابعاد تانسور ورودی یا خروجی با شکل مورد انتظار مدل مطابقت نداشته باشد. اطمینان از اینکه لایه خروجی مدل شما با شکل تانسور هدف شما مطابقت دارد ، برای جلوگیری از این خطاها بسیار مهم است.
چگونه می توانم تنشور را در tensorflow.js اداره کنم؟
تانسور ها ساختار داده اصلی در tensorflow.js هستند. آنها نمایانگر آرایه های چند بعدی هستند و برای ذخیره ورودی داده ها به یا خروجی از مدل های یادگیری ماشین استفاده می شوند. استفاده صحیح از شکل ها و ابعاد آنها برای آموزش مدل موفق ضروری است.
با دنبال کردن این مراحل ، اکنون باید بتوانید خطا را حل کرده و با اطمینان به کار خود بر روی پروژه Tensorflow.js خود ادامه دهید! اگر با هر مسئله دیگری روبرو شدید ، احساس راحتی کنید تا به کمک بیشتری برسید.