ボリュームニューラルネットワークCNN:一次元信号入力

1827 ワード

时间が过ぎて、あっという间にすでに2ヶ月が过ぎて、この日はたぶん私の大学院生の生涯の中で最も忙しい时間で、1つのpythonの白、深い学习の白から、今まで自分がやっと深い学习の敷居を触ったと感じて、心の中はやはりいくつかの喜びと感慨があって、多くの人にとって、私の进度はそんなに速くないかもしれません.しかし私にとって、これは1つの質的な変化の2ヶ月で、忙しい自分に感謝して、向上した自分、永遠に放棄しない自分.
tensorflowは初心者にとって確かに友好的ではありませんが、選んだ以上、義理を顧みません.その間karesを回したいと思って、karesのもっと高級なパッケージはずっと私を誘惑しています.思い切ってtensorflowを使って、変な問題がたくさんあって、こんなに多くの問題に出会って、私はやはり解決して、このような達成感は何にも及ばない.
自分で作ったCNNではなく、CNNを使ってクラシックな構造の中で最も簡単なLeNet-5です.次はCNNを学び、自分のプロジェクトに移行する過程です.
1、初めてCNNに接触して、云の教室の上で呉恩达の先生の说明を见て、大体CNNの中で巻き积み重ねと池化层の原理を理解して、CNNに対して1つの大体の印象があって、私はこれがとても重要だと思って、さもなくばあなたはすべてあなたが使うのがどんなものなことを知らないで、あなたはどのように使いますか?
2、それから本のルーチンに従って、手をたたいてmnist_CNN、データセットは手書きのデジタルmnistを使って、LeNet-5が具体的にどのように実現するかを理解して、少なくとも構造を変える必要があって、どのように変えるかを知っています.
3、それから1週間にわたる移行で、mnistデータセットを自分のデータセットに変えました.tensorflowボリューム操作は4次元テンソルしかサポートされていないので、これに長い時間がかかったような気がします.今考えてみると、今週はデータフォーマットの問題を処理しています.自分のデータセットは1次元なので、データはいろいろなエラーがあって、しばらく表にしません.
4、プログラムは走って通じて、それからlossがずっと変わらないことを発见して、最后に出力がすべてとても大きい数字を探し当てて、ラベルはただ0と1で、だから先に正規化を行って、それからすべて0.999で、まったく分类することができなくて、问题は
tf.nn.sparse_softmax_cross_entropy_with_logits(logits=y, labels=y_)

この関数の使い方は、私の分類が多分類で、混合クラスなので、この関数は彼のもので、1つだけ許可されています.
tf.nn.softmax_cross_entropy_with_logits(logits=y, labels=y_)

この関数に置き換えると,自分でyを正規化することなく,自動的にyにsoftmax操作を行うので便利といえる.またy_と比較を行いlossをadam最適化した.train_accuracyは0.9999に達することができる.validation_accuracyは低いですが、これは開始にすぎません.選択したデータセットにも関係します.
以下は私のプログラムで、自分で検証をダウンロードすることができます.
https://github.com/UltrasonicZ/CNN_LeNet-5_onedimension
私のデータセットは比較的大きいので、少し大きいでしょう、trainxは6321*801で、trainyは6321*321で、私が使っているminbatchは訓練を行っているので、メモリの占有量もあまり高くありませんが、valxも6321*801で、valyは6321*321で、訓練プログラムが走るたびに、検証プログラムが走ると、12 GのGPUをいっぱいにすることができます.次はこのような状況(扶養額)を減らすに違いないが,次の研究キューとマルチスレッドはこのGPU占有の問題を効果的に解決できるはずである.