Skip to content

Commit 4a33cb2

Browse files
Resolve Swift toolchain build errors (#316)
This week, the S4TF team encountered several failures building toolchains: 1. Outdated Package.resolved in [swift/FastaiNotebook_11_imagenette](https://github.com/fastai/fastai_dev/blob/master/swift/FastaiNotebook_11_imagenette/Package.resolved). 2. A regression in `ParameterlessLayer` caused by a change in type inference behavior in [swiftlang/swift#32578](swiftlang/swift#32578). This PR includes two workarounds that unblock toolchain builds: 1. Remove Package.resolved ([swift-apis/1036](tensorflow/swift-apis#1036)). Since this file is regenerated on build, it's often not necessary to include in source control. 2. Add a typealias to instances conforming to `ParameterlessLayer`, which was effective in swift-apis and swift-models (see [tensorflow/swift-apis#1037](tensorflow/swift-apis#1037)). I'm happy to create an additional PR to remove the other Package.resolved files in this repo and add to .gitignore, if desired.
1 parent 9ba4512 commit 4a33cb2

File tree

18 files changed

+67
-34
lines changed

18 files changed

+67
-34
lines changed

swift/01a_fastai_layers.ipynb

+4
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,8 @@
460460
"\n",
461461
"@frozen\n",
462462
"public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {\n",
463+
" // swift-apis#1037 workaround.\n",
464+
" public typealias TangentVector = EmptyTangentVector\n",
463465
" // TF-603 workaround.\n",
464466
" public typealias Input = Tensor<Scalar>\n",
465467
" public typealias Output = Tensor<Scalar>\n",
@@ -508,6 +510,8 @@
508510
"\n",
509511
"@frozen\n",
510512
"public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {\n",
513+
" // swift-apis#1037 workaround.\n",
514+
" public typealias TangentVector = EmptyTangentVector\n",
511515
" // TF-603 workaround.\n",
512516
" public typealias Input = Tensor<Scalar>\n",
513517
" public typealias Output = Tensor<Scalar>\n",

swift/FastaiNotebook_01a_fastai_layers/Sources/FastaiNotebook_01a_fastai_layers/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_02_fully_connected/Sources/FastaiNotebook_02_fully_connected/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_02a_why_sqrt5/Sources/FastaiNotebook_02a_why_sqrt5/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_03_minibatch_training/Sources/FastaiNotebook_03_minibatch_training/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_04_callbacks/Sources/FastaiNotebook_04_callbacks/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_05_anneal/Sources/FastaiNotebook_05_anneal/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_05b_early_stopping/Sources/FastaiNotebook_05b_early_stopping/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_06_cuda/Sources/FastaiNotebook_06_cuda/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_07_batchnorm/Sources/FastaiNotebook_07_batchnorm/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_08_data_block/Sources/FastaiNotebook_08_data_block/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_08a_heterogeneous_dictionary/Sources/FastaiNotebook_08a_heterogeneous_dictionary/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_08c_data_block_generic/Sources/FastaiNotebook_08c_data_block_generic/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_09_optimizer/Sources/FastaiNotebook_09_optimizer/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_10_mixup_ls/Sources/FastaiNotebook_10_mixup_ls/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_11_imagenette/Package.resolved

-34
This file was deleted.

swift/FastaiNotebook_11_imagenette/Sources/FastaiNotebook_11_imagenette/01a_fastai_layers.swift

+4
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,8 @@ public extension FAConv2D {
223223

224224
@frozen
225225
public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
226+
// swift-apis#1037 workaround.
227+
public typealias TangentVector = EmptyTangentVector
226228
// TF-603 workaround.
227229
public typealias Input = Tensor<Scalar>
228230
public typealias Output = Tensor<Scalar>
@@ -263,6 +265,8 @@ public struct FAAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,Parameterles
263265

264266
@frozen
265267
public struct FAGlobalAvgPool2D<Scalar: TensorFlowFloatingPoint>: FALayer,ParameterlessLayer {
268+
// swift-apis#1037 workaround.
269+
public typealias TangentVector = EmptyTangentVector
266270
// TF-603 workaround.
267271
public typealias Input = Tensor<Scalar>
268272
public typealias Output = Tensor<Scalar>

swift/FastaiNotebook_11_imagenette/Sources/FastaiNotebook_11_imagenette/11_imagenette.swift

+3
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public struct ConvLayer: Layer {
2929
}
3030

3131
public struct MaybeAvgPool2D: ParameterlessLayer {
32+
// swift-apis#1037 workaround.
33+
public typealias TangentVector = EmptyTangentVector
34+
3235
@noDerivative let poolSize: (Int, Int, Int, Int)
3336
@noDerivative let strides: (Int, Int, Int, Int)
3437
@noDerivative let padding: Padding

0 commit comments

Comments
 (0)