kersを使う時input_shapeの次元表示問題説明
2189 ワード
Kerasはバックエンドの2つのセットを提供しています。ThanoとTensorflowは、バックエンドの使用時の次元順序が異なるdim_。orderingは衝突します。
224×224のカラー画像の表示に問題がある場合、theanoはthフォーマットを使用しており、次元順は(3、224、224)であり、つまりチャンネル次元は前にあり、Caffeはこのような方式を取っている。Tensorflowはtfフォーマットを使用しています。次元順序は(224、224、3)で、つまりチャンネル次元は後にあります。
KerasはデフォルトでTensorflowを使用しています。モジュールを導入する時に確認したり、バックエンドを切り替えることができます。
コードはバックエンドの2つの互換性がありますので、data_を通過することができます。formatパラメータは次元順の設定を行います。format='chanels_first',対応“th”,data_format='chanels_last'は、「tf」に対応する。
補足知識:Tensorflow Keras中input_shapeによる次元順の衝突問題(NCHWとNHWC)
tf.kers.Sequentialで畳み込み層を構築することを例にとって:
tf.kers.layers.conv 2 D(10,3,input_sharpe=(2,9,9),padding='same',activation=tf.nn.relu,ケネル_initializer='glorot_normal,bias_initializer='glorot_normal
これは簡単な畳み込み層の定義で、主にinput_を見ます。shapeパラメータ:
これは畳み込み入力の形状を指定するためのパラメータです。Kerasはバックエンド、ThanoとTensorflowの2つのセットを提供しています。バックエンドが異なる場合は、このパラメータの次元順dim_を指定します。orderingは衝突します。
Thano(th):
NCHW:順番は[batch,in_]です。chanels,in_ヘットwidth
Tensorflow(tf):kersasはデフォルトでこのような方式を使います。
NHWC:順番は[batch,in_]です。ヘットwidth,in_チャンネル
上記のinput_に対してshape=(2,9,9)を言います。まずbatchを無視します。2はチャンネル数に解析されます。行列の大きさは9*9です。私達の予想に合います。tfは、マトリックスサイズを2*9に解析し、最後のビット9はチャネル数を表し、予想とは異なる。
解決
法一:
畳み込み層定義にパラメータを追加して、2つのバックエンド間でkersaが切り替わります。
data_format='chanels_first':代表th
data_format='chanels_last':代表tf
しかし、この方法はいつ成功しないとエラーを報告しますか?
cpuコンピュータによるものかもしれませんが、NHWCだけがtfモードです。
対応するファイルの構成のみがNCHWをサポートするように修正され、ここを参考にしてください。
法二:(おすすめ)
tf.transpose関数を使って高次元データの転送(次元が2より大きく、軸の変換)を行います。
上記(2,9,9)を(9,9,2)に変換し、行列は9*9であり、レシオ関数のように単純に次元を調整するのではなく、2をチャネル数とし、レシオ関数を用いて変換すると、チャンネル数は9、行列は9*2のデータしか得られない。
tf.transpose(待ち行列、(1,2,0)
説明:
このうち0,1,2…は、元のマトリックス次元が左から右の軸にかけての符号であり、すなわち(2,9,9)の3次元がそれぞれ符号0,1,2に対応している。調整した後、符号順を1、2、0にします。つまり、表のチャンネル数の軸を最後にします。このようにして、回転したマトリックスは、ケアレスのデフォルトのtfバックエンドを満たします。正常に訓練できます。
以上のこの記事は、kersを使う時にinput_を使います。shapeの次元表示問題の説明は小編集が皆さんに提供した内容の全部です。参考にしていただければと思います。よろしくお願いします。
224×224のカラー画像の表示に問題がある場合、theanoはthフォーマットを使用しており、次元順は(3、224、224)であり、つまりチャンネル次元は前にあり、Caffeはこのような方式を取っている。Tensorflowはtfフォーマットを使用しています。次元順序は(224、224、3)で、つまりチャンネル次元は後にあります。
KerasはデフォルトでTensorflowを使用しています。モジュールを導入する時に確認したり、バックエンドを切り替えることができます。
コードはバックエンドの2つの互換性がありますので、data_を通過することができます。formatパラメータは次元順の設定を行います。format='chanels_first',対応“th”,data_format='chanels_last'は、「tf」に対応する。
補足知識:Tensorflow Keras中input_shapeによる次元順の衝突問題(NCHWとNHWC)
tf.kers.Sequentialで畳み込み層を構築することを例にとって:
tf.kers.layers.conv 2 D(10,3,input_sharpe=(2,9,9),padding='same',activation=tf.nn.relu,ケネル_initializer='glorot_normal,bias_initializer='glorot_normal
これは簡単な畳み込み層の定義で、主にinput_を見ます。shapeパラメータ:
これは畳み込み入力の形状を指定するためのパラメータです。Kerasはバックエンド、ThanoとTensorflowの2つのセットを提供しています。バックエンドが異なる場合は、このパラメータの次元順dim_を指定します。orderingは衝突します。
Thano(th):
NCHW:順番は[batch,in_]です。chanels,in_ヘットwidth
Tensorflow(tf):kersasはデフォルトでこのような方式を使います。
NHWC:順番は[batch,in_]です。ヘットwidth,in_チャンネル
上記のinput_に対してshape=(2,9,9)を言います。まずbatchを無視します。2はチャンネル数に解析されます。行列の大きさは9*9です。私達の予想に合います。tfは、マトリックスサイズを2*9に解析し、最後のビット9はチャネル数を表し、予想とは異なる。
解決
法一:
畳み込み層定義にパラメータを追加して、2つのバックエンド間でkersaが切り替わります。
data_format='chanels_first':代表th
data_format='chanels_last':代表tf
しかし、この方法はいつ成功しないとエラーを報告しますか?
cpuコンピュータによるものかもしれませんが、NHWCだけがtfモードです。
対応するファイルの構成のみがNCHWをサポートするように修正され、ここを参考にしてください。
法二:(おすすめ)
tf.transpose関数を使って高次元データの転送(次元が2より大きく、軸の変換)を行います。
上記(2,9,9)を(9,9,2)に変換し、行列は9*9であり、レシオ関数のように単純に次元を調整するのではなく、2をチャネル数とし、レシオ関数を用いて変換すると、チャンネル数は9、行列は9*2のデータしか得られない。
tf.transpose(待ち行列、(1,2,0)
説明:
このうち0,1,2…は、元のマトリックス次元が左から右の軸にかけての符号であり、すなわち(2,9,9)の3次元がそれぞれ符号0,1,2に対応している。調整した後、符号順を1、2、0にします。つまり、表のチャンネル数の軸を最後にします。このようにして、回転したマトリックスは、ケアレスのデフォルトのtfバックエンドを満たします。正常に訓練できます。
以上のこの記事は、kersを使う時にinput_を使います。shapeの次元表示問題の説明は小編集が皆さんに提供した内容の全部です。参考にしていただければと思います。よろしくお願いします。