Link > 阿鼻叫喚ジェネレーター > T゛e゛n゛s゛o゛r゛F゛l゛o゛w゛に゛与゛え゛る゛デ゛ー゛タ゛そ゛の゛も゛の゛が゛間゛違゛っ゛て゛い゛た゛よ゛ | Python: character from string | breakdown of the iteration by solvers

```txt:動作環境
GeForce GTX 1070 (8GB)
ASRock Z170M Pro4S [Intel Z170chipset]
Ubuntu 16.04 LTS desktop amd64
TensorFlow v1.2.1
cuDNN v5.1 for Linux
CUDA v8.0
Python 3.5.2
IPython 6.0.0 -- An enhanced Interactive Python.
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
GNU bash, version 4.3.48(1)-release (x86_64-pc-linux-gnu)
```


### 背景

最近、1カ月思ったようにTensorFlowの学習結果が得られない。

何を間違えているのだろう。

Matplotlibで対象としている数値を可視化してみた。
http://qiita.com/7of9/items/e00d8e911ca3ce266c12

v0.1(2017年8月19日作成データ)の結果を見ると、何故かRe{m}=1.5の結果だけ特殊だ。
(Re{m}=1.5以外が特殊ということかもしれない。)

再度、別の区切りで計算をし直した。
v0.2(2017年9月16日作成データ)の結果を見ると、それなりの結果となった。

### tool

参考: [作戦3: Zshの自動補正機能を使う @ "composer" のタイプミス多すぎ問題を解決する](http://qiita.com/mpyw/items/a4495d476ea9ffe54e16#%E4%BD%9C%E6%88%A63-zsh%E3%81%AE%E8%87%AA%E5%8B%95%E8%A3%9C%E6%AD%A3%E6%A9%9F%E8%83%BD%E3%82%92%E4%BD%BF%E3%81%86)

http://azunyan.sitemix.jp/shout/shout.php
を使ってみた。


>  T゛e゛n゛s゛o゛r゛F゛l゛o゛w゛に゛与゛え゛る゛デ゛ー゛タ゛そ゛の゛も゛の゛が゛間゛違゛っ゛て゛い゛た゛よ゛


### Python実装

[How to split a string into array of characters with Python? @ Stackoverflow](https://stackoverflow.com/questions/4978787/how-to-split-a-string-into-array-of-characters-with-python)

https://ideone.com/pWigvl

```py
def func_scream1(msg):
    for elem in msg.split():
        print("_**%s**_" % elem, end='')

def func_scream2(msg):
    for elem in msg.split():
        alist = list(elem)
        for inloop in alist:
            print("*%s*" % inloop, end='')
        print(end=' ')	

MSG="I made a mistake in the input file for the TensorFlow"
func_scream1(MSG)
print()
func_scream2(MSG)
```

```txt:run
_**I**__**made**__**a**__**mistake**__**in**__**the**__**input**__**file**__**for**__**the**__**TensorFlow**_
*I* *m**a**d**e* *a* *m**i**s**t**a**k**e* *i**n* *t**h**e* *i**n**p**u**t* *f**i**l**e* *f**o**r* *t**h**e* *T**e**n**s**o**r**F**l**o**w* 
```

list()は不要のようだ。
https://ideone.com/CQ9pNO

```py
def func_scream1(msg):
    for elem in msg.split():
        print("_**%s**_" % elem, end='')

def func_scream2(msg):
    for elem in msg.split():
        for code in elem:
            print("*%s*" % code, end='')
        print(end=' ')	

MSG="I made a mistake in the input file for the TensorFlow"
func_scream1(MSG)
print()
func_scream2(MSG)
```

### 所感

Words cannot express all my feelings.

データの可視化は大切だと再認識した。

なぜおかしなinputになったのかは不思議ではある。

正しいデータにしたら学習効率が上がるのだろうか?

(追記)
再度v0.1計算時と同じ設定で計算すると、同じ結果が得られた。
使用しているコードの特殊な条件に合致しているのかもしれない。
SolverはQMR。

[ADDA + Matplotlib > scatterplot of [the number of iterations] for various values of Re{m} and Im{m}, for different iterative solvers (e.g., bicgstab2, bicg, QMR, etc)](http://qiita.com/7of9/items/db74c768617aacbe9381)にて調べた限りでは、QMRの時とQMR2の時(とBiCG)でおかしな状況になっているようだ。

@ [manual.pdf](https://github.com/adda-team/adda/blob/master/doc/manual.pdf) p39
iterationのbreakdownについての記載がある。

> All iterative solvers except CGNR and CSYM are susceptible to breakdown. ... For instance, simulation of light scattering by cube with edge length that is exactply multiple of the wavelength results in breakdowns of QMR, QMR2, and Bi-CG. ...

結果のscatterplotと同じ特徴だ。
breakdownしたのか。