Python용 TensorFlow 코드를 Swift용으로 컨버팅

2023. 4. 21. 10:53아이폰 개발

Swift용 TensorFlow 라이브러리에서는 tf.gather나 tf.broadcast_to 등과 같은 간단한 함수들조차 제공하지 않아서, Python에서는 쉽게 구현한 코드를 Swift용으로 컨버팅을 하려면 같은 결과를 만드는 사용자 정의 함수를 만들어서 사용해야 한다. Swift에서 이미 배열 연산을 제공하기 때문에 크게 어렵지 않게 직접 구현 가능하다.

https://www.tensorflow.org/api_docs/python/tf/gather

 

tf.gather  |  TensorFlow v2.12.0

Gather slices from params axis axis according to indices. (deprecated arguments)

www.tensorflow.org

https://www.tensorflow.org/api_docs/python/tf/math/reduce_max

 

tf.math.reduce_max  |  TensorFlow v2.12.0

Computes tf.math.maximum of elements across dimensions of a tensor.

www.tensorflow.org

iOS 16부터 지원하는 BNNS 라이브러리에서 동일한 함수를 제공하기는 하는데, 굳이 사용할 필요가 없다.

https://developer.apple.com/documentation/accelerate/3929412-bnnsgather

 

BNNSGather(_:_:_:_:_:) | Apple Developer Documentation

Gathers the elements of a tensor along a single axis.

developer.apple.com

Matft 라이브러리는 여전히 유용하게 사용 가능하다. 일반 배열을 MfArray로 변환해서 연산을 처리한 다음, 결과는 다시 일반 배열로 바꾸는 식으로 처리하면 된다.

https://github.com/jjjkkkjjj/Matft

 

GitHub - jjjkkkjjj/Matft: Numpy-like library in swift. (Multi-dimensional Array, ndarray, matrix and vector library)

Numpy-like library in swift. (Multi-dimensional Array, ndarray, matrix and vector library) - GitHub - jjjkkkjjj/Matft: Numpy-like library in swift. (Multi-dimensional Array, ndarray, matrix and vec...

github.com

번외로 Python 버전 TensorFlow 프로그램을 M2 맥북에어에서 실행하려니, tensorflow 라이브러리에서 문제가 생긴다.

python -m pip install tensorflow-macos==2.7.0

https://stackoverflow.com/questions/70977755/could-not-find-a-version-that-satisfies-the-requirement-tensorflow-python3-9-6

 

Could not find a version that satisfies the requirement tensorflow - python3.9 64bit

I'm trying to use Tensorflow for some federated learning purposes, but I can't successfully install it using pip. pip install tensorflow Error message I get is: ERROR: Could not find a version that

stackoverflow.com