2020年01月15日

機械学習だって  なああぁにいぃぃ・・・機械が勉強するってーーのかあぁ!!

  いやいや、なんということか。4章 ニューラルネットの例題の実行結果がどうも違う?  余計な数字が一つ入っている・・・・ これはなんだ?
  と思ってC言語のProgram Codeを読んでしまったワイ。そして実行して分かったのだが本はミスだ。あの余計な数字が出てくるProgramではない。
まあ結果自体は正しいのだけど、なんでここに数字が17個出力されるんだ?  と拙者は悩んだ次第であります。変数は16個のはず。12 + 4 = 16個になるはず。だが本の出力結果は17個もあるぞ?????
   そういうわけでね、Codeを読んで、結果はワシのPCでは思惑通りに出たし、本とは違うし。
本の結果が間違っておるおるおーーーるず。

   17個の数字は16個が小数点、一つだけ整数なんだわ。どうしたら、こういう出力になるんだぎゃ?   そもそも配列はdoubleなんで、それを出力しているんだぎゃ!!
 
  くそーーー、一週間 悩んだで!!  ひまだし(笑)

で、著者はprint()関数を次のように書いている。

/**********************/

/*   print()関数      */

/*   結果の出力       */

/**********************/

void print(double wh[HIDDENNO][INPUTNO+1]

          ,double wo[HIDDENNO+1])

{

int i,j ;/*繰り返しの制御*/

for(i=0;i<HIDDENNO;++i)

for(j=0;j<INPUTNO+1;++j)

printf("%lf ",wh[i][j]) ;

printf("\n") ;

for(i=0;i<HIDDENNO+1;++i)

printf("%lf ",wo[i]) ;

printf("\n") ;

}

吾輩の予想としては、この記述は処理系によってはバグだすのでは?  本の結果はdoubleの配列を出力して改行のところで整数が出ているのだ。その後にdoubleの数字が続く。
拙者の環境はWin 10(1909) + VScode + gccである。gcc versionは多分最近のだと思うよん。これで思惑通りの結果が出た。改行して整数が出る、なんてない。

このCodeをLinuxでテスト、Visual Studio Communityでテスト・・・とか やらんもんね。

次は第5章の深層学習だ。一歩前進だ。遅々としてでも進むのだ!!

posted by toinohni at 09:44| 東京 🌁| Comment(0) | ソフト系雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください