Lc0Net constructor
Lc0Net(
- Lc0Weights w, {
- Device device = Device.GPU,
Implementation
Lc0Net(this.w, {Device device = Device.GPU})
: device = device,
inputConv = _makeConv(w.input, 112, w.filters, 3, 1, device),
resA = [
for (final r in w.residual)
_makeConv(r.conv1, w.filters, w.filters, 3, 1, device),
],
resB = [
for (final r in w.residual)
_makeConv(r.conv2, w.filters, w.filters, 3, 1, device),
],
se = [
for (final r in w.residual)
r.se == null ? null : _makeSE(r.se!, w.filters, device),
],
policy1 = _makeConv(w.policy1, w.filters, w.filters, 3, 1, device),
policyOut = _makeConv(
w.policyOut,
w.filters,
w.policyOutputPlanes,
3,
1,
device,
),
valueConv = _makeConv(
w.valueConv,
w.filters,
w.valueFilters,
1,
0,
device,
),
ip1ValWT = Tensor.fromList(
[w.valueFilters * 64, w.valueFCUnits],
_ip1ValWNhwc(w.ip1ValW.toList(), w.valueFCUnits, w.valueFilters),
device: device,
),
ip1ValB = Tensor.fromList(
[1, w.valueFCUnits],
w.ip1ValB.toList(),
device: device,
),
ip2ValWT = Tensor.fromList(
[w.valueFCUnits, w.wdl],
_transpose2d(w.ip2ValW.toList(), w.wdl, w.valueFCUnits),
device: device,
),
ip2ValB = Tensor.fromList([1, w.wdl], w.ip2ValB.toList(), device: device),
_ones64x1 = Tensor.fill([64, 1], 1.0, device: device),
_avgWeights = Tensor.fill([1, 64], 1.0 / 64.0, device: device);