costが最初から最後まで0 / {train_error=0.000000, valid_error=0.000000}

625 views
Skip to first unread message

Shuji Tokuda

unread,
Jul 5, 2018, 2:27:39 AM7/5/18
to Neural Network Console Users (JP)
NNCマスターズの方々へ

自作したCSVファイルをDATESETに設定し、単純なNN(Input-Affine-ReLU-SoftmaxCrossEntropy関数)の学習をさせようとしたところ、
costが最初から最後まで0となってしまいました。これって正しいのでしょうか?
下記のログでは  {train_error=0.000000, valid_error=0.000000}となっているので、なにかがおかしいのではないかと思っています。

具体的なログは下記のとおりです。

2018-07-05 15:22:37,739 Training process is started.
python "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\cli.py" train
 -c "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS_Prediction.files\20180705_152237\net.nntxt"
 -o "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS_Prediction.files\20180705_152237"
2018-07-05 15:22:38,727 [nnabla]: Creating cache data for "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\Learn_3rd_clensing_1_9.csv"
2018-07-05 15:22:38,904 [nnabla]: Creating cache data for "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\Valid_3rd_clensing_1_9.csv"
2018-07-05 15:22:39,111 [nnabla]: Train with contexts ['cpu']
2018-07-05 15:22:39,142 [nnabla]: Training epoch 1 of 50 begin
2018-07-05 15:22:39,665 [nnabla]: epoch 1 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:40,151 [nnabla]: epoch 2 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:40,630 [nnabla]: epoch 3 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:41,116 [nnabla]: epoch 4 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:41,601 [nnabla]: epoch 5 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:41,771 [nnabla]: epoch 6 of 50 cost=0.000000
2018-07-05 15:22:41,933 [nnabla]: epoch 7 of 50 cost=0.000000
2018-07-05 15:22:42,087 [nnabla]: epoch 8 of 50 cost=0.000000
2018-07-05 15:22:42,256 [nnabla]: epoch 9 of 50 cost=0.000000
2018-07-05 15:22:42,735 [nnabla]: epoch 10 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:42,905 [nnabla]: epoch 11 of 50 cost=0.000000
2018-07-05 15:22:43,058 [nnabla]: epoch 12 of 50 cost=0.000000
2018-07-05 15:22:43,221 [nnabla]: epoch 13 of 50 cost=0.000000
2018-07-05 15:22:43,390 [nnabla]: epoch 14 of 50 cost=0.000000
2018-07-05 15:22:43,559 [nnabla]: epoch 15 of 50 cost=0.000000
2018-07-05 15:22:43,722 [nnabla]: epoch 16 of 50 cost=0.000000
2018-07-05 15:22:43,891 [nnabla]: epoch 17 of 50 cost=0.000000
2018-07-05 15:22:44,054 [nnabla]: epoch 18 of 50 cost=0.000000
2018-07-05 15:22:44,208 [nnabla]: epoch 19 of 50 cost=0.000000
2018-07-05 15:22:44,693 [nnabla]: epoch 20 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:44,856 [nnabla]: epoch 21 of 50 cost=0.000000
2018-07-05 15:22:45,015 [nnabla]: epoch 22 of 50 cost=0.000000
2018-07-05 15:22:45,179 [nnabla]: epoch 23 of 50 cost=0.000000
2018-07-05 15:22:45,342 [nnabla]: epoch 24 of 50 cost=0.000000
2018-07-05 15:22:45,495 [nnabla]: epoch 25 of 50 cost=0.000000
2018-07-05 15:22:45,665 [nnabla]: epoch 26 of 50 cost=0.000000
2018-07-05 15:22:45,827 [nnabla]: epoch 27 of 50 cost=0.000000
2018-07-05 15:22:45,988 [nnabla]: epoch 28 of 50 cost=0.000000
2018-07-05 15:22:46,159 [nnabla]: epoch 29 of 50 cost=0.000000
2018-07-05 15:22:46,629 [nnabla]: epoch 30 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:46,799 [nnabla]: epoch 31 of 50 cost=0.000000
2018-07-05 15:22:46,946 [nnabla]: epoch 32 of 50 cost=0.000000
2018-07-05 15:22:47,115 [nnabla]: epoch 33 of 50 cost=0.000000
2018-07-05 15:22:47,285 [nnabla]: epoch 34 of 50 cost=0.000000
2018-07-05 15:22:47,447 [nnabla]: epoch 35 of 50 cost=0.000000
2018-07-05 15:22:47,601 [nnabla]: epoch 36 of 50 cost=0.000000
2018-07-05 15:22:47,770 [nnabla]: epoch 37 of 50 cost=0.000000
2018-07-05 15:22:47,933 [nnabla]: epoch 38 of 50 cost=0.000000
2018-07-05 15:22:48,102 [nnabla]: epoch 39 of 50 cost=0.000000
2018-07-05 15:22:48,573 [nnabla]: epoch 40 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:48,735 [nnabla]: epoch 41 of 50 cost=0.000000
2018-07-05 15:22:48,905 [nnabla]: epoch 42 of 50 cost=0.000000
2018-07-05 15:22:49,067 [nnabla]: epoch 43 of 50 cost=0.000000
2018-07-05 15:22:49,221 [nnabla]: epoch 44 of 50 cost=0.000000
2018-07-05 15:22:49,390 [nnabla]: epoch 45 of 50 cost=0.000000
2018-07-05 15:22:49,553 [nnabla]: epoch 46 of 50 cost=0.000000
2018-07-05 15:22:49,707 [nnabla]: epoch 47 of 50 cost=0.000000
2018-07-05 15:22:49,876 [nnabla]: epoch 48 of 50 cost=0.000000
2018-07-05 15:22:50,036 [nnabla]: epoch 49 of 50 cost=0.000000
2018-07-05 15:22:50,509 [nnabla]: epoch 50 of 50 cost=0.000000  {train_error=0.000000, valid_error=0.000000}
2018-07-05 15:22:50,509 [nnabla]: Training Completed.

どうぞよろしくお願いいたします。
Learn_3rd_clensing_1_9.csv
Valid_3rd_clensing_1_9.csv

Shuji Tokuda

unread,
Jul 5, 2018, 3:34:32 AM7/5/18
to Neural Network Console Users (JP)
下記の小林様の回答が、今回の回答になるのでしょうか?
もしそうであれば、小さくなりすぎとは、具体的に小数第何位までであれば良いのでしょうか?

2018年6月13日水曜日 10時05分30秒 UTC+9 小林由幸:
ニューラルネットワークの最適化の過程で行われる計算は基本的に掛け算の繰り返しであり、入力データが大きすぎたり小さすぎたりすると、値が発散したり、あるいは小さくなりすぎたりしてうまく最適化できなくなることがあります。

Message has been deleted

Shuji Tokuda

unread,
Jul 8, 2018, 9:16:12 PM7/8/18
to Neural Network Console Users (JP)
各列の最大、最小値の絶対値のうち、大きい数値で割り算し、1になるよう規格化し、データが小さくなりすぎないようにしましたが、Errorを抑えられずNGでした。 原因がよくわからないです。

Shuji Tokuda

unread,
Jul 8, 2018, 9:44:07 PM7/8/18
to Neural Network Console Users (JP)
データ列を17列から2列にすると動きました。取り急ぎ連絡までに。 

小林由幸

unread,
Jul 8, 2018, 10:35:56 PM7/8/18
to Neural Network Console Users (JP)
添付していただいたテータセットの方を拝見しましたが、こちらは回帰問題でしょうか?

回帰問題の場合、ロス関数としてSoftmaxCrossEntropyではなく、
SquaredError(二乗誤差)を用いるのが適当かと思います。
また、ロス関数の前にReLUを挿入してしまうと、0以上の値しか出力し得なくなるため
Affineの直後にSquaredErrorとしたほうが良いです。


まとめると、このデータセットに対する最もシンプルなネットワークは
Input→Affine→SquaredErrorになります(線形回帰)。

ちなみにcostが0になっていた原因ですが、
SoftmaxCrossEntropyはクラス分類問題の際に使用するロス関数であり、
今回のケースは全てyが0付近であるため、0番目のニューロンの値をとにかく大きくするように
学習された結果costが0になったものと推測します。

Shuji Tokuda

unread,
Jul 10, 2018, 4:12:40 AM7/10/18
to Neural Network Console Users (JP)
小林様

ご回答ありがとうございます。
お察しの通り回帰問題でした、懇切丁寧なご説明ありがとうござました。
X0~X8のパラメーターによる回帰値を求めようしていました。

評価結果をCSVに保存しますと、y, y'__0~y'__99の値があります。
基本的な質問で大変恐縮ですが、y'__0~y'__99の列は、yとの誤差を返しているのですよね?
そうであれば、評価データのyの回帰値を求めるには、y+y'__99とすれば良いのですね。
グラフで確認してもそのように見えるので、間違っていないような気がしますが、念の為お教え願います。


 

Shuji Tokuda

unread,
Jul 10, 2018, 5:29:22 AM7/10/18
to Neural Network Console Users (JP)
小林様、

大変恐縮ですが、あと一つ教えてください。

「評価データのyの値」と「評価データのy+y'__99」の値が近似しすぎており、学習データを元にその値が生成されているにしては合致しすぎており正直戸惑っております。 評価データのyの値(答え)が計算に使われているのではないかと危惧しております。
評価データのyの値(答え)が回帰計算に使われてないのであれば、評価データのyの値を入れずに学習と評価を行うことができれば気持ち的にはすっきりするのですが。

ちなみに、評価データのyをブランクにし「Training」を開始すると下記エラーが発生します。

2018-07-10 18:09:40,182 Training process is started.


python "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\cli.py" train

 -c "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS_Prediction.files\20180710_180940\net.nntxt"
 -o "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS_Prediction.files\20180710_180940"
2018-07-10 18:09:41,142 [nnabla]: Creating cache data for "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\Learning_20180624_LS42d _3rd_clensing_1.csv"
2018-07-10 18:09:41,276 [nnabla]: Creating cache data for "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\Valid_20180624_LS42d _3rd_clensing_1_Blank.csv"
Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source_implements.py", line 363, in _get_value
    value = [float(value)]
ValueError: could not convert string to float:

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\cli.py", line 195, in main
    args.func(args)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\train.py", line 279, in train_command
    info = load.load(files)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 716, in load
    info.datasets = _datasets(proto, prepare_data_iterator)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 512, in _datasets
    d.uri, d.batch_size, d.shuffle, d.no_image_normalization, d.cache_dir, d.overwrite_cache, d.create_cache_explicitly, prepare_data_iterator)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 475, in _create_dataset
    with data_iterator_csv_dataset(uri, batch_size, shuffle, rng=rng, normalize=False, cache_dir=cache_dir) as di:
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_iterator.py", line 490, in data_iterator_csv_dataset
    epoch_end_callbacks=epoch_end_callbacks)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_iterator.py", line 373, in data_iterator
    rng=rng)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source.py", line 353, in __init__
    self._create_cache()
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source.py", line 252, in _create_cache
    self._store_data_to_cache_buffer(self._position)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source.py", line 211, in _store_data_to_cache_buffer
    self._save_cache_to_file()
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source.py", line 157, in _save_cache_to_file
    pool.map(get_data, [(pos, q) for pos in self._cache_positions])
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\multiprocessing\pool.py", line 266, in map
    return self._map_async(func, iterable, mapstar, chunksize).get()
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\multiprocessing\pool.py", line 644, in get
    raise self._value
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\multiprocessing\pool.py", line 119, in worker
    result = (True, func(*args, **kwds))
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\multiprocessing\pool.py", line 44, in mapstar
    return list(map(*args))
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source.py", line 142, in get_data
    d = self._data_source._get_data(pos)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source_implements.py", line 373, in _get_data
    return tuple(self._process_row(self._rows[self._order[position]]))
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source_implements.py", line 353, in _process_row
    column_value, is_vector=True)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\data_source_implements.py", li


c90

unread,
Jul 10, 2018, 9:13:37 PM7/10/18
to Neural Network Console Users (JP)
横からですが、ブランクはNGです。適当に0埋めとかすると動きます。

2018年7月10日火曜日 18時29分22秒 UTC+9 Shuji Tokuda:

Shuji Tokuda

unread,
Jul 11, 2018, 12:24:25 AM7/11/18
to Neural Network Console Users (JP)
c90様

ご回答ありがとうございます。

実は、評価データ「y」列のすべての行を定数入力し 試してはいたのですが、結局どれが結果なのかが分かりませんでした。
100回の学習であれば、「y'__99」が結果になるのでしょうか?
結果の意味は、誤差を表示しているだけで、回帰値(予測値)はどこをみれば良いのかがわかりません。
ネットワークは、小林様のアドバイスによりInput→Affine→SquaredErrorを使用しています。

NNC初心者で使い方を習得最中ということもあり、結果の見方自体もよくわかっていませんがどうぞよろしくお願いいたします。



c90

unread,
Jul 11, 2018, 12:40:26 AM7/11/18
to Neural Network Console Users (JP)
評価データが
x__0,x__1,x__2,x__3,x__4,x__5,x__6,x__7,x__8,y
だったら、評価結果は
x__0,x__1,x__2,x__3,x__4,x__5,x__6,x__7,x__8,y,y'
と出力されると思います。
y'__99って?

SquaredErrorの前のAffineのoutshape1になってますか?


2018年7月11日水曜日 13時24分25秒 UTC+9 Shuji Tokuda:

c90

unread,
Jul 11, 2018, 1:41:31 AM7/11/18
to Neural Network Console Users (JP)
ちょっと初心者の方には失礼な書き方になっていたかもしれませんので、
お詫び申し上げます。
なので、ちょっとアドバイスを・・・

入力層はInputで
出力層はAffine+SquaredErrorのセットです。yは1次元なので、ここのAffineのOutShapeは1にしないと出力に合いません。

ここができれば、入力層と出力層の間に中間層(隠れ層)を適当にかませばいいだけです。
とりあえず、↑のCSV使ってテキトーに中間層いれてみました。

参考までに

2018年7月11日水曜日 13時40分26秒 UTC+9 c90:
20180711_142932.csv
network.png

Shuji Tokuda

unread,
Jul 11, 2018, 4:20:26 AM7/11/18
to Neural Network Console Users (JP)

c90様

丁寧なご説明、並びに結果ファイルをいただきありがとうございます。
書籍やブログで調べているつもりですが、AffineのOutShapeのことは知りませんでしたので助かります。

中間層(隠れ層)を添付ファイルの通りに積んでみましたが、下記のエラーとなってしまいました。
AffineのOutShapeと同様に、何か基本的な設定を行っていないのではないかと思います。
大変恐縮ですが、お手隙の時にお教えいただけると助かります。


2018-07-11 17:13:40,328 Training process is started.

python "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\cli.py" train
 -c "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS3_Prediction.files\20180711_171340\net.nntxt"
 -p "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS3_Prediction.files\20180711_171340\initial_parameters.h5"
 -o "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\SF\LS3_Prediction.files\20180711_171340"
2018-07-11 17:13:43,267 [nnabla]: Creating cache data for "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\Learning_20180624_3rd_clensing_1.csv"
2018-07-11 17:13:43,405 [nnabla]: Creating cache data for "C:\Program Files\neural_network_console(SONY)\samples\sample_dataset\Valid_20180624_3rd_clensing_1_000.csv"

Exception in thread Thread-1:
Traceback (most recent call last):
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\threading.py", line 916, in _bootstrap_inner
    self.run()
  File "C:\Program Files\neural_network_console(SONY)\libs\Miniconda3\lib\threading.py", line 864, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\cli.py", line 195, in main
    args.func(args)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\cli\train.py", line 279, in train_command
    info = load.load(files)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 719, in load
    info.networks = _networks(proto, default_context, batch_size)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 527, in _networks
    np, default_context, batch_size, all_variables, rng)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 247, in _network
    variable = _create_variable(v, name, shape, rng)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\utils\load.py", line 203, in _create_variable
    variable_instance = get_parameter_or_create(name, shape, initializer)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\parameter.py", line 169, in get_parameter_or_create
    return get_parameter_or_create('/'.join(names[1:]), shape, initializer, need_grad)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\parameter.py", line 169, in get_parameter_or_create
    return get_parameter_or_create('/'.join(names[1:]), shape, initializer, need_grad)
  File "C:\Program Files\neural_network_console(SONY)\libs\nnabla\python\src\nnabla\parameter.py", line 181, in get_parameter_or_create
    assert param.shape == tuple(shape)
AssertionError
network.png

c90

unread,
Jul 11, 2018, 8:12:10 AM7/11/18
to Neural Network Console Users (JP)
多分データの置く場所が悪いだけだと思います。
Program Filesの下を掘るのはやめて、ドキュメントかデスクトップにしましょう。

2018年7月11日水曜日 17時20分26秒 UTC+9 Shuji Tokuda:

Shuji Tokuda

unread,
Jul 16, 2018, 10:53:09 PM7/16/18
to Neural Network Console Users (JP)
c90様

いつも適格なアドバイスありがとうございます。
データをデスクトップに置くことで問題は解決できました。

基本的な質問で申し訳ないのですが、もう少し教えてくください。
評価データのyの列の値を、定数0の場合と定数0.5を入力し、評価するとOutput Resultのy'結果が大きく異なります。
学習データは共に同じものを使用しておりますが、なぜ評価データのyの列の値が結果に影響しているがかわからなく困っています。
それぞれ、理想の答えとも大きく異なっています。


定数0、定数0.5の場合のOutput Result、Confusion Matrixの結果、ならびに理想の答えを添付いたします。
ノードネットワークは、前回c90様より頂いたものをベースにstructure searchを有効にしてbestなものを使用しています。

定数_0.5.csv
定数_0.csv
ConfusionMatrix_定数_0&0.5.csv
理想の答え.csv

c90

unread,
Jul 17, 2018, 4:38:46 AM7/17/18
to Neural Network Console Users (JP)
当初は回帰問題を扱っていたと思いますが、分類問題に変えたいのでしょうか?
私自身、ConfusionMatrixは分類問題の時に登場する画面だと理解しています。

入力も変わっていますね。
さらにインデックスは0から始めないといけないと思うのですが、そうなってませんね。

structure search使ったら別物になる可能性があるので、何をやりたいかとネットワークのpngを貼った方がいいかもです。



2018年7月17日火曜日 11時53分09秒 UTC+9 Shuji Tokuda:

c90

unread,
Jul 17, 2018, 4:53:27 AM7/17/18
to Neural Network Console Users (JP)
 以下のチュートリアルスライドのP38に問題に対応した出力層のパターンが
載っているのでやりたいこととあっているか確認してみてください

ちなみに、スライドシェアでSony Network Communications Inc.を検索すると
よい資料を出しているのでご覧になると気づくことが多いと思います。

あと、マニュアルもw

2018年7月17日火曜日 17時38分46秒 UTC+9 c90:

小林由幸

unread,
Jul 18, 2018, 6:02:32 AM7/18/18
to Neural Network Console Users (JP)
c90さんありがとうございます。
1点補足ですが、推論結果のy'はこれがそのまま予測値を示します。
(yと足したりして予測値を求めるわけではありません)
Message has been deleted
Message has been deleted

Shuji Tokuda

unread,
Jul 19, 2018, 2:57:03 AM7/19/18
to Neural Network Console Users (JP)
その他の受信者:
c90様 当初の通り、回帰問題がを扱っているのは変わりありませんが、手探りでNNCを扱っているので 知らないことが多く混乱を招いてしまいました。 ConfusionMatrixは分類の時だけに見る項目というこも理解しておりませんでした。 また、データをいろいろ試している内に、インデックスは0から始めるルールを守れていませんでした。。 小林様 評価データのyの値を0と0.5を入力し試してみましたが、結果が異なります。 同じ、ネットワークを使っているのですが理由がわかりません。

c90様
当初の通り、回帰問題がを扱っているのは変わりありませんが、手探りでNNCを扱っているので
知らないことが多く混乱を招いてしまいました。
ConfusionMatrixは分類の時だけに見る項目というこも理解しておりませんでした。
また、データをいろいろ試している内に、インデックスは0から始めるルールを守れていませんでした。。


小林様
評価データのyの値を0と0.5を入力し試してみましたが、結果が異なっております。
添付の通り、同じネットワークを使っているのですが理由がわかりません。
また、評価結果と理想の答えと大きくかけ離れているのも気になっています。
何か、良きアドバイス等ありましたらよろしくお願いいたします。
network.png
Learning_20180624_LS42d _3rd_clensing_1.csv
Valid_20180624_LS42d _3rd_clensing_1_0.5.csv
Valid_20180624_LS42d _3rd_clensing_1_000.csv
評価結果と理想の答えの乖離.png

c90

unread,
Jul 19, 2018, 5:41:52 AM7/19/18
to Neural Network Console Users (JP)
理想とかけ離れているのはノード(1はナイな、せめて18かな)や層が足りていないんだと思います。

このネットワーク使って学習させた同じ学習済みデータを使って、y'を出したら、yが0.5でも1でも同じになりましたよ。

同じネットワークを使って違うValidationデータを設定するときに、再度学習したんじゃないですかね?
そうなると、初期値やシャッフルによるミニバッチのデータが変わるので、同じ結果になりませんよ。

2018年7月19日木曜日 15時57分03秒 UTC+9 Shuji Tokuda:

c90

unread,
Jul 19, 2018, 5:44:30 AM7/19/18
to Neural Network Console Users (JP)
ファイル添付し忘れました

2018年7月19日木曜日 18時41分52秒 UTC+9 c90:
Valid_20180624_LS42d _3rd_clensing_1_0.5result.csv
Valid_20180624_LS42d _3rd_clensing_1_000result.csv

Shuji Tokuda

unread,
Jul 20, 2018, 2:02:10 AM7/20/18
to Neural Network Console Users (JP)
c90様

評価データの影響の件ですが、再度学習させていたのが原因でした。どうもありがとうございました。

結果が理想とかけ離れている点ですが、ノードは先日の通り、InputとSqareErrorの間に13ノードを間に挟んでいました。
「ノード(1はナイな、せめて18かな)」とありますが、何か、回帰式の精度を上げるコツなどはないのでしょうか?なにか適当なノードを挟むだけでよいのでしょうか?
(或るHPでは、単に数を増やしても精度が上がらないと記載がありましたので。。。)
当初は、structure search使えば、自動で最適な回帰を行うことができることを期待をしていましたが、そうではないのですね。
なかなか使いこなすのが難しいと感じています。




c90

unread,
Jul 20, 2018, 6:18:12 AM7/20/18
to Neural Network Console Users (JP)
ノードと層を取り違えていませんか?
1ノードの層が13ある感じだったような・・・

コツといえるかわかりませんが、
成功しているネットワークをマネして(とりあえず出力層を回帰用か分類用に変えて)試すしかないと思います。
「深層学習 ネットワーク state of the arts」などでググってもいいし、解説書でもいいので、マネしながら経験を
積むのがいいと思われます。

あとstructure searchはある程度いい線行ってからのもうひと伸びを狙う時くらいしか使わない方がいいと思います。



2018年7月20日金曜日 15時02分10秒 UTC+9 Shuji Tokuda:

Shuji Tokuda

unread,
Jul 22, 2018, 10:01:13 PM7/22/18
to Neural Network Console Users (JP)
c90様

アドバイスどうもありがとうございます。
お察しの通り、ノードと層を取り違えていました、言葉の定義をよく把握できておりません。(並列数、直列数のほうが個人的にはわかりやすいですが。。。)
検索条件にしても、 「state of the arts」を初めて聞いたレベルです。
これから、成功例をググってみたいと思います。
Reply all
Reply to author
Forward
0 new messages