Ví dụ 2 Mô hình


Xáo 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ỏ (lô). Mỗi lô sau đó được đưa vào mô hình. Việc xáo trộn rất quan trọng để ngăn mô hình lấy 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ể tổng quát hóa dữ liệu và đưa ra kết quả đầu ra phù hợp. Việc xáo trộn cung cấp nhiều loại dữ liệu tốt hơn trong mỗi lô.

Thí dụ

tf.util.shuffle(data);

TensorFlow Tensors

Để 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 nơ-ron.

Phạm vi 0 - 1 sử dụng min-max thường 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

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ự

const model = tf.sequential (); tạo Mô hình ML tuần tự .

Trong mô hình tuần tự, đầu vào chảy 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. Sequential 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à một loại lớp hoạt động trong hầu hết các trường hợp. Nó nhân các đầu vào của nó với một 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ì chúng ta có 1 đầu vào (x = phòng).

đơ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 soạn một mô hình

Biên dịch mô hình với một trình tối ưu hóa và chức năng mất 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ó là đơ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à các giá trị thực.