動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 14.04 LTS desktop amd64
TensorFlow v0.11
cuDNN v5.1 for Linux
CUDA v8.0
Python 2.7.6
TensorFlowを使った多項式フィッティングの例を見つけた。
TensorFlowを使って多項式のフィッティングを実装してみる @ FPGA開発日記さん
ソースコードが公開されていて、それを試してみた。
プログラムはlinreg.pyという名前にした。
結果
$ python linreg.py
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcublas.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcudnn.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcufft.so locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcuda.so.1 locally
I tensorflow/stream_executor/dso_loader.cc:111] successfully opened CUDA library libcurand.so locally
I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:925] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero
I tensorflow/core/common_runtime/gpu/gpu_device.cc:951] Found device 0 with properties:
name: GeForce GTX 1070
major: 6 minor: 1 memoryClockRate (GHz) 1.7715
pciBusID 0000:01:00.0
Total memory: 7.91GiB
Free memory: 7.47GiB
I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1041] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
4999 9.25199 -13.6215 3.59225 0.667213
同じような係数が得られた。
y4の定義については以下を使えばよさそう。
http://docs.python.jp/2.5/ref/power.html
#y4 = W3*x_data*x_data*x_data+W2*x_data*x_data + W1*x_data + W0
y4 = W3*(x_data**3)+W2*(x_data**2) + W1*x_data + W0
...
I tensorflow/core/common_runtime/gpu/gpu_device.cc:972] DMA: 0
I tensorflow/core/common_runtime/gpu/gpu_device.cc:982] 0: Y
I tensorflow/core/common_runtime/gpu/gpu_device.cc:1041] Creating TensorFlow device (/gpu:0) -> (device: 0, name: GeForce GTX 1070, pci bus id: 0000:01:00.0)
4999 9.0852 -12.8266 2.61043 0.952773
以下の記事も参考になります。
TensorFlowを使って多項式のフィッテイングを実装してみる(学習サンプル数と学習結果)
TODO
自分がしたいことはADDAという数値計算において、通常計算を終了した時の線形方程式の係数を学習すること。
その係数を初期値として線形方程式を解くと、計算が速くなることは2007年頃に確認済。ポスター資料 @ トルコ発表
ある条件の場合の初期値を90%程度まで近似できれば、あとは線形方程式を続けて解くことで正確な結果を速く得ることができると目論んでいる。
上記のソースを元に望む方向に持っていく。
- x_data, y_dataのファイルからの読込み
- y4の式の検討
- どういう式/ネットが最適か?
- ただの多項式? 次数は?
- ConvNet / Fully Connected Neural Network?
- ConvNetは多クラス分類のみ有効なのか?
- 活性化関数の検討
- softmaxではないという現状認識
- どういう式/ネットが最適か?