%install '.package(path: "$cwd/FastaiNotebook_00_load_data")' FastaiNotebook_00_load_data import FastaiNotebook_00_load_data import Path import TensorFlow let (xTrain, yTrain, xValid, yValid) = loadMNIST(path: mnistPath, flat: true) //export import Python //export public let np = Python.import("numpy") public let plt = Python.import("matplotlib.pyplot") %include "EnableIPythonDisplay.swift" IPythonDisplay.shell.enable_matplotlib("inline") let img = np.array(xTrain[0].array.scalars).reshape(28,28) plt.figure(figsize: [5,5]) let fig = plt.imshow(X:img, cmap:"gray") plt.show(fig) var weights = Tensor(randomNormal: [784, 10]) / sqrt(784) var bias = Tensor(repeating: 0.0, shape: [10]) let (arc,brc) = ((5, 784), (784, 10)) func swiftMatmul(a:[Float], b:[Float], arc:(Int,Int), brc:(Int,Int)) -> [Float] { var res:[Float] = Array(repeating: 0.0, count: arc.0*brc.1) for i in 0.., _ b:Tensor) -> Tensor{ var res:Tensor = Tensor(repeating: 0.0, shape: [a.shape[0], b.shape[1]]) for i in 0..(randomNormal: [5, 784]) let m2 = Tensor(randomNormal: [784, 10]) time() { let res = TensorMatmul(m1, m2)} var a = Tensor([10.0, 6, -4]) var b = Tensor([2.0, 8, 7]) (a,b) a + b a < b a .< b var m = Tensor([1.0, 2, 3, 4, 5, 6, 7, 8, 9]).reshaped(to: [3,3]) m 2 * m sqrt((m * m).sum().scalar!) func elementWiseMatmul(_ a:Tensor, _ b:Tensor) -> Tensor{ let (ar,ac) = (a.shape[0],a.shape[1]) let (br,bc) = (b.shape[0],b.shape[1]) var res = Tensor(zeros: [ac, br]) for i in 0.. 0) print((a .> 0).all()) print((a .> 0).any()) print(a+1) 2 * m let c = Tensor([10.0,20.0,30.0]) m + c c + m m + c.expandingShape(at: 1) c.expandingShape(at: 1) func broadcastMatmult(_ a:Tensor, _ b:Tensor) -> Tensor{ var res = Tensor(zeros: [a.shape[0], b.shape[1]]) for i in 0.. c.expandingShape(at: 1) time(repeating: 100) { let _ = matmul(m1, m2)} notebookToScript(fname: (Path.cwd / "01_matmul.ipynb").string)