Skip to content
This repository was archived by the owner on Apr 23, 2025. It is now read-only.

Commit f57f0ef

Browse files
authored
Fix ResNet build. (#140)
* Fix ResNet build. * Remove Foundation import.
1 parent a44ba91 commit f57f0ef

File tree

5 files changed

+52
-78
lines changed

5 files changed

+52
-78
lines changed
File renamed without changes.
File renamed without changes.

CIFAR/resnet.swift renamed to CIFAR/ResNet.swift

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -117,42 +117,3 @@ extension ResNet {
117117
self.init(blockCount: kind.rawValue)
118118
}
119119
}
120-
121-
// TODO: remove this when TF supports differentiableReduce, thanks @rxwei!
122-
public extension Array where Element: Differentiable {
123-
func differentiableReduce<Result: Differentiable>(
124-
_ initialResult: Result,
125-
_ nextPartialResult: @differentiable (Result, Element) -> Result
126-
) -> Result {
127-
return reduce(initialResult, nextPartialResult)
128-
}
129-
130-
@usableFromInline
131-
@differentiating(differentiableReduce(_:_:), wrt: (self, initialResult))
132-
internal func reduceDerivative<Result: Differentiable>(
133-
_ initialResult: Result,
134-
_ nextPartialResult: @differentiable (Result, Element) -> Result
135-
) -> (value: Result,
136-
pullback: (Result.CotangentVector) -> (Array.CotangentVector, Result.CotangentVector)) {
137-
var pullbacks: [(Result.CotangentVector) -> (Result.CotangentVector, Element.CotangentVector)] = []
138-
let count = self.count
139-
pullbacks.reserveCapacity(count)
140-
var result = initialResult
141-
for element in self {
142-
let (y, pb) = Swift.valueWithPullback(at: result, element, in: nextPartialResult)
143-
result = y
144-
pullbacks.append(pb)
145-
}
146-
return (value: result, pullback: { cotangent in
147-
var resultCotangent = cotangent
148-
var elementCotangents = CotangentVector([])
149-
elementCotangents.base.reserveCapacity(count)
150-
for pullback in pullbacks.reversed() {
151-
let (newResultCotangent, elementCotangent) = pullback(resultCotangent)
152-
resultCotangent = newResultCotangent
153-
elementCotangents.base.append(elementCotangent)
154-
}
155-
return (CotangentVector(elementCotangents.base.reversed()), resultCotangent)
156-
})
157-
}
158-
}

CIFAR/wide_resnet.swift renamed to CIFAR/WideResNet.swift

Lines changed: 0 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -175,42 +175,3 @@ extension WideResNet {
175175
}
176176
}
177177
}
178-
179-
// TODO: remove this when TF supports differentiableReduce, thanks @rxwei!
180-
public extension Array where Element: Differentiable {
181-
func differentiableReduce<Result: Differentiable>(
182-
_ initialResult: Result,
183-
_ nextPartialResult: @differentiable (Result, Element) -> Result
184-
) -> Result {
185-
return reduce(initialResult, nextPartialResult)
186-
}
187-
188-
@usableFromInline
189-
@differentiating(differentiableReduce(_:_:), wrt: (self, initialResult))
190-
internal func reduceDerivative<Result: Differentiable>(
191-
_ initialResult: Result,
192-
_ nextPartialResult: @differentiable (Result, Element) -> Result
193-
) -> (value: Result,
194-
pullback: (Result.CotangentVector) -> (Array.CotangentVector, Result.CotangentVector)) {
195-
var pullbacks: [(Result.CotangentVector) -> (Result.CotangentVector, Element.CotangentVector)] = []
196-
let count = self.count
197-
pullbacks.reserveCapacity(count)
198-
var result = initialResult
199-
for element in self {
200-
let (y, pb) = Swift.valueWithPullback(at: result, element, in: nextPartialResult)
201-
result = y
202-
pullbacks.append(pb)
203-
}
204-
return (value: result, pullback: { cotangent in
205-
var resultCotangent = cotangent
206-
var elementCotangents = CotangentVector([])
207-
elementCotangents.base.reserveCapacity(count)
208-
for pullback in pullbacks.reversed() {
209-
let (newResultCotangent, elementCotangent) = pullback(resultCotangent)
210-
resultCotangent = newResultCotangent
211-
elementCotangents.base.append(elementCotangent)
212-
}
213-
return (CotangentVector(elementCotangents.base.reversed()), resultCotangent)
214-
})
215-
}
216-
}

ResNet/Helpers.swift

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright 2019 The TensorFlow Authors. All Rights Reserved.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
// TODO: Remove this when it's moved to the standard library.
16+
extension Array where Element: Differentiable {
17+
func differentiableReduce<Result: Differentiable>(
18+
_ initialResult: Result,
19+
_ nextPartialResult: @differentiable (Result, Element) -> Result
20+
) -> Result {
21+
return reduce(initialResult, nextPartialResult)
22+
}
23+
24+
@differentiating(differentiableReduce(_:_:), wrt: (self, initialResult))
25+
func reduceDerivative<Result: Differentiable>(
26+
_ initialResult: Result,
27+
_ nextPartialResult: @differentiable (Result, Element) -> Result
28+
) -> (value: Result,
29+
pullback: (Result.CotangentVector) -> (Array.CotangentVector, Result.CotangentVector)) {
30+
var pullbacks: [(Result.CotangentVector)
31+
-> (Result.CotangentVector, Element.CotangentVector)] = []
32+
let count = self.count
33+
pullbacks.reserveCapacity(count)
34+
var result = initialResult
35+
for element in self {
36+
let (y, pb) = Swift.valueWithPullback(at: result, element, in: nextPartialResult)
37+
result = y
38+
pullbacks.append(pb)
39+
}
40+
return (value: result, pullback: { cotangent in
41+
var resultCotangent = cotangent
42+
var elementCotangents = CotangentVector([])
43+
elementCotangents.base.reserveCapacity(count)
44+
for pullback in pullbacks.reversed() {
45+
let (newResultCotangent, elementCotangent) = pullback(resultCotangent)
46+
resultCotangent = newResultCotangent
47+
elementCotangents.base.append(elementCotangent)
48+
}
49+
return (CotangentVector(elementCotangents.base.reversed()), resultCotangent)
50+
})
51+
}
52+
}

0 commit comments

Comments
 (0)