先日TensorFlow Dev Summit2018でSwift for TensorFlow
が発表されました。
同時にTensorFlowのWebサイトにSwift for TensorFlow
のページができています。
私はTensorFlowについては初心者なのですが、今回はSwift for TensorFlow
をインストールして試してみました!
基本的にはGitHubのREADMEを見ながら実行していきます。
インストール
- プレビルドパッケージをダウンロードする
私はmacを使っているので、GitHubのページからXcode
と書かれているものをダウンロードします。
-
ダウンロードしたパッケージを実行する 実行すると、
/Library/Developer/Toolchains/
にXcode toolchainが追加されます。Xcode toolchain(.xctoolchain
)には、コンパイラーやその他の開発ツールが含まれています。 -
Xcodeを開いて、
環境設定
からCompnents > Toolchains
にいき、インストールされた`Swift for TensorFlow toolchainを選択します。
- toolchainの選択はXcodeのみに適用されるので、コマンドラインを仕様する場合は、Swift toolchainをパスに追記する必要があります。
export PATH=/Library/Developer/Toolchains/swift-latest/usr/bin:"${PATH}"
これでインストールは完了です。
Swift for TensorFlowを使ってみる
とりあえず使ってみるという部分はこちらに記載されています。
REPL(Read Eval Print Loop)
ターミナルを開いて、swiftを起動します。
$ swift
TensorFlowを実行してみます。
1> import TensorFlow
2> var x = Tensor<Float>([[1, 2], [3, 4]])
x: TensorFlow.Tensor<Float> = [[1.0, 2.0], [3.0, 4.0]]
3> x + x
$R0: TensorFlow.Tensor<Float> = [[2.0, 4.0], [6.0, 8.0]]
4> for _ in 0..<3 {
5. x += x
6. }
7> x
$R1: TensorFlow.Tensor<Float> = [[8.0, 16.0], [24.0, 32.0]]
8> x[0] + x[1]
$R2: TensorFlow.Tensor<Float> = [32.0, 48.0]
インタプリタ
スクリプト言語のようにインタプリタでSwiftを実行することができます。
inference.swift
というファイルを作成して、以下のコードを書きます。
import TensorFlow
struct MLPClassifier {
var w1 = Tensor<Float>(shape: [2, 4], repeating: 0.1)
var w2 = Tensor<Float>(shape: [4, 1], scalars: [0.4, -0.5, -0.5, 0.4])
var b1 = Tensor<Float>([0.2, -0.3, -0.3, 0.2])
var b2 = Tensor<Float>([[0.4]])
func prediction(for x: Tensor<Float>) -> Tensor<Float> {
// The ⊗ operator performs matrix multiplication.
let o1 = tanh(x ⊗ w1 + b1)
return tanh(o1 ⊗ w2 + b2)
}
}
let input = Tensor<Float>([[0.2, 0.8]])
let classifier = MLPClassifier()
let prediction = classifier.prediction(for: input)
print(prediction)
保存したら、swiftで実行します。
$ swift -O inference.swift
[[0.680704]]
-O
をつけることではSwiftで最適化された状態で実行されます。
Xcode
Xcodeで実行するには、上記インストール手順で、Xcodeのツールチェーンをインストールしたものに変更しておきます。
新しいPlaygroundファイルを作成して、以下のコードを記述します。
import TensorFlow
let x = Tensor<Float>([[1, 2], [3, 4]])
print(x)
するとPlaygroundが実行されて、結果が表示されます。
以上でSwift for TensorFlow
でTensorFlowを使用することができました。
次回は何かしらのモデルを学習させたり予測させたりしたいと思います。
エンジニアリング Swift Xcode TensorFlow Machine Lerning 機械学習
関連記事
-
2025/3/28
Macのストレージに空き容量があるのに、実際には空き容量がない状態になっているとき
Mac Storage
-
2024/3/24
try! Swift Tokyo 2024
try! Swift Tokyo 2024の参加メモ
Swift
-
2023/1/31
SwiftUIでTabBarを非表示にする
SwiftUI TabBar
-
2023/1/14
Bootstrap5.3で追加されたダークモードに対応してみました
Bootstrap DarkMode
-
2021/2/17
brew upgradeで Your CLT does not support macOS 11というエラーがでた
homebrew macOS Big Sur
-
2020/12/1
Apple Silicon搭載 MacBook Pro M1で Homebrewとrbenvをインストールする
先日購入したApple Silicon搭載 MacBook Pro M1にこのブログをビルドするためにHomebrewとrbenvをインストールしたのでメモ。
Apple Silicon Homebrew rbenv
-
2020/11/27
Apple Silicon搭載のMacBook Pro M1が危うく文鎮化するところだったので記録
Apple Silicon搭載のMacBook Pro 13インチを仕事用に購入したのですが、クリーンインストールしたところ文鎮化しかけたので記録しておきます。
MacBook Pro Apple Apple Silicon M1
-
2020/6/23
Platform State of the Unionまとめ
Platform State of the Unioまとめ
WWDC2020 Apple アップル iOS macOS watchOS tvOS
-
2020/6/23
WWDC2020キーノートまとめ
WWDC2020 キーノートまとめ
WWDC2020 Apple アップル iOS macOS watchOS tvOS
-
2020/5/31
GitHub Pagesで無料ブログを作成する - Part4 自分のオリジナルのテーマを作る
Jekyllでは既存のテーマを使うこともできるのですが、さらに一歩踏み込んで、自分で既存のテーマをカスタマイズしたり、テーマを作ることもできます。
GitHub Pages ブログ