Lc0Net constructor

Lc0Net(
  1. Lc0Weights w, {
  2. 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);