假设我们有数据集X(2D数组),并将其分为批次// initialize tasks
let tasks = new Map([
["Attendance", 1],
["Table Captain", 4],
["Teacher's Helper", 2],
["Board Eraser", 2],
["Light Switcher", 1],
["Librarian", 2],
["Lunch Helper", 1],
["Equipment Manager", 3],
["Trash Monitor", 2],
["Tech Specialist", 1],
["Paper Passer", 3],
["Pencil Sharpener", 1]
]);
// initialize people by counting total hands for all tasks
let totalPeople = 0;
for (let p of tasks.values()) totalPeople += p;
// and give each person an empty list of tasks for each assignment
let people = Array.apply(null, Array(totalPeople)).map(() => new Array());
function assign(tasks, people) {
let moreAssignmentsMayBePossible = true;
let assignments = 0;
outer: while (moreAssignmentsMayBePossible) {
let nextIndex = 0;
for (let t of tasks) {
let initialIndex = nextIndex;
let [name, count] = [t[0], t[1]];
while (count > 0) {
if (nextIndex >= people.length) {
nextIndex = 0;
}
let candidate = people[nextIndex++];
if (candidate.indexOf(name) == -1 && candidate.length == assignments) {
candidate.push(name);
count --;
} else if (nextIndex == initialIndex) {
moreAssignmentsMayBePossible = false;
break outer; // no more assignments possible
}
}
}
assignments ++; // yay! finished a full assignment
}
// drop extra tasks from over-burdened people
people.forEach((o) => o.length = assignments);
return assignments;
}
assign(tasks, people);
people.forEach((o, i) => console.log(i, o.length, o.join(", ")));
。
然后对每个批次进行归一化,然后将批次元素的每个第i个分量乘以参数import requests
from requests_kerberos import HTTPKerberosAuth, REQUIRED, OPTIONAL, DISABLED
r = requests.get("https://cas.id.ubc.ca/ubc-cas/login", auth=HTTPKerberosAuth(mutual_authentication=OPTIONAL))
,然后将其添加到X_1, ..., X_k
。
批处理规范化层可以重复多次,但我没有发现它如何在网络中更深入地实现。
在下一个BN层中,我们是否使用与开始时相同的划分方式进行批处理(在X中与第一层BN层使用相同的行),只是添加了新的gamma_i
和beta_i
参数,还是我们从头开始为每个图层的输入做这件事?
希望,我的问题很清楚。