Ví dụ 1 Mô hình
Trộn dữ liệu
Luôn xáo trộn dữ liệu trước khi đào tạo.
Khi một mô hình được huấn luyện, dữ liệu được chia thành các tập nhỏ (đợt). Mỗi lô sau đó được đưa vào mô hình. Việc xáo trộn là rất quan trọng để ngăn mô hình nhận lại cùng một dữ liệu. Nếu sử dụng cùng một dữ liệu hai lần, mô hình sẽ không thể khái quát hóa dữ liệu và đưa ra kết quả đầu ra phù hợp. Việc xáo trộn mang lại nhiều loại dữ liệu tốt hơn trong mỗi đợt.
Ví dụ
tf.util.shuffle(data);
TensorFlow Tensor
Để sử dụng TensorFlow, dữ liệu đầu vào cần được chuyển đổi thành dữ liệu tensor:
// Map x values to Tensor inputs
const inputs = values.map(obj => obj.x);
// Map y values to Tensor labels
const labels = values.map(obj => obj.y);
// Convert inputs and labels to 2d tensors
const inputTensor = tf.tensor2d(inputs, [inputs.length, 1]);
const labelTensor = tf.tensor2d(labels, [labels.length, 1]);
Chuẩn hóa dữ liệu
Dữ liệu phải được chuẩn hóa trước khi được sử dụng trong mạng lưới thần kinh.
Phạm vi 0 - 1 sử dụng tối thiểu-tối đa thường là tốt nhất cho dữ liệu số:
const inputMin = inputTensor.min();
const inputMax = inputTensor.max();
const labelMin = labelTensor.min();
const labelMax = labelTensor.max();
const nmInputs = inputTensor.sub(inputMin).div(inputMax.sub(inputMin));
const nmLabels = labelTensor.sub(labelMin).div(labelMax.sub(labelMin));
Mô hình dòng chảy
Mô hình học máy là một thuật toán tạo ra đầu ra từ đầu vào.
Ví dụ này sử dụng 3 dòng để xác định Mô hình ML :
const model = tf.sequential();
model.add(tf.layers.dense({inputShape: [1], units: 1, useBias: true}));
model.add(tf.layers.dense({units: 1, useBias: true}));
Mô hình ML tuần tự
mô hình const = tf.sequential(); tạo ra Mô hình ML tuần tự .
Trong mô hình tuần tự, đầu vào truyền trực tiếp đến đầu ra. Các mô hình khác có thể có nhiều đầu vào và nhiều đầu ra. Tuần tự là mô hình ML dễ dàng nhất. Nó cho phép bạn xây dựng mô hình theo từng lớp, với trọng số tương ứng với lớp tiếp theo.
Lớp TensorFlow
model.add() được sử dụng để thêm hai lớp vào mô hình.
tf.layer.dense là loại lớp hoạt động trong hầu hết các trường hợp. Nó nhân đầu vào của nó với ma trận trọng số và thêm một số (độ lệch) vào kết quả.
Hình dạng và đơn vị
inputShape: [1] vì ta có 1 đầu vào (x = mã lực).
đơn vị: 1 xác định kích thước của ma trận trọng số: 1 trọng số cho mỗi đầu vào (giá trị x).
Biên dịch một mô hình
Biên dịch mô hình với hàm tối ưu hóa và hàm mất được chỉ định:
model.compile({loss: 'meanSquaredError', optimizer:'sgd'});
Trình biên dịch được thiết lập để sử dụng trình tối ưu hóa sgd . Nó rất đơn giản để sử dụng và khá hiệu quả.
MeanSquaredError là hàm chúng tôi muốn sử dụng để so sánh các dự đoán của mô hình và giá trị thực.