ディープラーニングにおけるconcatenateの使用について
1. numpyで連結を使用する。
1.1 numpy.concatenate 関数の定義。
numpy.concatenate((a1, a2, ...) , axis=0, out=None)
パラメータです。
a1, a2, ... ...。
- sequence of array_like 軸に相当する次元(デフォルトでは1番目)を除き、配列は同じ形状でなければならない。
軸になります。
- int, オプション , 配列が結合される軸。
を表示します。
- ndarray, オプション 与えられた場合、結果を配置する目的地。その形状は、out引数が指定されなかった場合にconcatenateが返すであろうものと一致する、正しいものでなければならない。
1.2 例
1.2.1 行単位でマージする
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b), axis=0) # where axis=0 means merge by row
出力
array([[1, 2],
[3, 4],
[5, 6]])
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6]])
np.concatenate((a, b.T), axis=1) # where axis=1 means merge by column
1.2.2 カラムによるマージ
array([[1, 2, 5],
[3, 4, 6]])
出力します。
array([[1, 2, 5],
[3, 4, 6]])
2. ディープラーニングにおけるconcatenate関数の利用
<ブロッククオート
深層学習では、ネットワークレベルでの接続が必要な箇所も出てきますので、私たちの研究の文脈で、そのような接続を使用した例を2つ紹介します。
###2.1 U-netネットワークでconcatenateを使用する場合
u-netの動作の詳細については、ドキュメントを参照してください。
[2]
U-netのネットワークは、入力が画像、出力が画像という符号化-復号化ネットワーク構造に基づいており、エンドツーエンドネットワークと等価である。
[3]
のネットワーク構造です。従来のネットワークは、確かにネットワークパラメータを減らすという機能は実現できますが、再構成効果があまり良くない場合があります。そこで、符号化の際に同じ大きさの特徴マップを、復号化の際に我々の復号ネットワークの特徴マップに接続し、符号ネットワークの構造情報を十分に活用して、より良いデミックス効果、つまり再構成効果を実現するようにしているのです。これにより、符号化ネットワークの構造情報を十分に活用し、より良いデミキシング、すなわち再構成効果を実現します。
2.2 DenseNetネットワークでの利用
<ブロッククオート近年のディープラーニングモデルの中で、CNN [4] レスネット [7,8] , GoogLeNet [6] , VGG [5] しかし、ディープCNNには、何層もの伝搬を繰り返すとデータが消えてしまうという問題が常につきまとう。しかし、深いCNNは常に、何層もの伝播の後にデータが消えやすいという問題を抱えている。resnetは"スキップ接続"の構造によって層間のデータの流れをある程度容易にするが、それでも出力に近いネットワーク層はネットワークの前の特徴を完全に捉えることはできない。グラフの様子 もう一点、レスネットの研究において、WRNの登場後 [9] のネットワークは、レスネットのネットワークの冗長性の可能性を示し、広く浅いネットワークが提案され、その効果はWRNもうまく機能することを証明しています。
CVPR 2017ベストペーパーにて
密に接続された畳み込みネットワーク
を提案し、その中で、著者らは新しいDenseNets
[10]
ネットワークでは、Resnetsで発生する冗長性の問題を解決することが出発点となっています。DensenetとResNestの数学的表現上の違いは、Resnetsにおけるスキップ層の追加を連結接続操作に変えたことである。以下はDenseNetsのネットワーク構成図である。
ご覧のように、スキップレイヤーをコンカチネートレイヤーにすることで、バックレイヤーとネットワーク全体の前の全レイヤーとの間に接続が確立され、ネットワークレイヤーの数が減り、ネットワークの学習が容易になります。しかし、DenseNetsを実装するために様々なフレームワークを使用する場合、多くのメモリを消費する可能性があり、著者らはこの問題の解決策を提案している
[11]
これはDenseNest自体の問題ではなく、tensorflowやpytorchなどの現在のフレームワークがconcatenate操作をうまくサポートしていないためだと説明しています。
参考記事
関連
-
ターゲット検出ベースモジュール(iou/giou/ciou/diou)のIoU概要
-
undefinedGoogLeNet 論文の翻訳 - 英語と中国語で書かれています。
-
ResNetの紹介
-
py-faster-rcnn/lib の make でエラー: コマンドラインオプション '-Wdate-time' が認識されない
-
ValueError:入力配列を形状 (450,600,3) から形状 (64,64,3) にブロードキャストできませんでした。
-
OrderedDict' オブジェクトに 'eval' 属性がありません。
-
U-netのソースコード解説(Keras編)
-
Pytorch Deep Learningです。TypeError: 'builtin_function_or_method' object is not iterable エラーの解決方法
-
AttributeError: 'tuple' オブジェクトには 'log_softmax' という属性がありません。
-
tensorflowエラーノート:PyCharmとAttributeErrorの下で様々なモジュールのインポートの問題:モジュール 'pandas.core.computation' は属性を持っていません。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[Tensorflow-Error】CUDA_ERROR_OUT_OF_MEMORY:メモリが不足しています。
-
Tensorflow 踩坑:ImportError: DLL のロードに失敗しました。指定されたモジュールが見つかりません。 TensorFlowのネイティブランタイムのロードに失敗しました。
-
ImportError: libSM.so.6: cannot open shared object file: そのようなファイルやディレクトリはありません
-
トーチの取り付けと使用
-
PackagesNotFoundError: 次のパッケージは、現在のチャンネルから利用できません ソリューション
-
Tensorflowのメタフィジカルエラーです。終了コード -1073741819 (0xC0000005)
-
Win10でanacondaのconda activateで環境起動時にエラーが出る場合はどうすればいいのでしょうか?
-
Tensorflow-gpu2.0.0インストールとtensorflow-gpuインストール成功のテストプログラム。
-
TensorFlow実行時エラー、AttributeError: モジュール 'pandas' には 'computation' という属性がない。
-
AttributeError: モジュール 'pandas' には 'core' という属性がありません。