Tensor Flow 2.0、kerasのConv2Dレイヤーでinput_shapeを指定する方法

Stark2022

CNNを使用して手書き数字MNIST28x28グレースケール画像を分類する画像分類モデルを構築していますこれが私のレイヤー定義です

    model = keras.Sequential()

model.add(keras.layers.Conv2D(64,(3,3),activation='relu',input_shape=(28,28,1)))
model.add(keras.layers.MaxPool2D((2,2)))
model.add(keras.layers.Conv2D(64,(3,3),activation='relu'))
model.add(keras.layers.MaxPool2D((2,2)))

model.add(keras.layers.Flatten())
model.add(keras.layers.Dense(200,activation='relu'))
model.add(keras.layers.Dense(10,activation='softmax'))

しかし、モデルをフィットさせるとこのエラーが発生します

 ValueError: Input 0 of layer sequential_6 is incompatible with the layer: : expected min_ndim=4, found ndim=3. Full shape received: [32, 28, 28]

また、Conv2Dレイヤーのinput_shapeで1を指定する必要がある理由も知りたいです。画像の形状は28x28ですが、そこで1を指定する必要があります。

adrtam

動作するはずの最小限の変更は、行を変更することです。

model.add(keras.layers.Conv2D(64,(3,3),activation='relu',input_shape=(28,28,1)))

これに、1:を削除します

model.add(keras.layers.Conv2D(64,(3,3),activation='relu',input_shape=(28,28)))

エラーが発生する理由は、入力画像が28x28であり、ネットワークにフィードするバッチサイズに32枚の画像があるため、次元の配列[32、28、28]です。残念ながら、入力をネットワークにフィードする方法がわかりません。しかし、現在のコードが期待しているのは、次元の配列[32、28、28、1]です。それがあなたが操作できる厄介な配列であるならば、そのreshape()ような次元にそれだけで問題を解決するでしょう。

上で提案したのは、逆のことを行うことです。ネットワークに、次元の3D配列[28,28,1]ではなく次元の2D配列[28,28]の各画像を期待するように依頼します。

更新:

それを機能させるために、次のコード変更を提供しました。

 train_image=train_image.reshape(60000, 28, 28, 1) 
 train_image=train_image / 255.0
 test_image = test_image.reshape(10000, 28, 28, 1) 
 test_image=test_image/255.0

これが行うことは、入力画像が単一の巨大なnumpy配列にあり、モデルをそれに直接適合させることです。モデル適合関数は、最初の次元からこの配列から「テンソル」を選択し、各トレーニングステップのバッチを作成します。バッチサイズは32であるため、形状の配列(32、28、28、1)が暗黙的に作成され、レイヤーに渡されます。2次元から4次元は、元の配列からコピーされるだけです。

reshape()コマンドは、配列の次元を変更することです。形状変更前の元の配列は(60000、28、28)であり、単一の数値シーケンスとしてレイアウトすると、6000x28x28の浮動小数点数になります。どのようなreshape()行いは、これらの番号をピックアップし、それを正確に充填することができるので、60000x28x28x1数字を期待(60000、28、28、1)配列、にそれらを満たすことです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

自分のデータセットのKerasのConv2Dレイヤーでinput_shapeを定義する方法を理解するのに問題があります

分類Dev

conv2dやtensor操作などの既存の操作を使用してPythonのtensorflowでカスタムレイヤーを作成できますか?

分類Dev

Keras Conv2Dレイヤーの最初の引数を理解する方法は?

分類Dev

Keras: `Input`レイヤーを使用すると" Found:Tensor( "input_1:0"、shape =(None、256、256、2)、dtype = float32) "エラーが発生する

分類Dev

Keras:別のConv2Dレイヤーで再利用するためにConv2Dレイヤーのカーネルを転置する

分類Dev

KerasでConv2Dレイヤーの後に出力を表示することは可能ですか?

分類Dev

Tensor-flowとKerasをインストールするRaspberryPi

分類Dev

特定のサイズのconv2dレイヤーでパディングを使用する方法

分類Dev

2つの並列conv2dレイヤー(keras)

分類Dev

Tensorflowでconv2dレイヤーの重みを見つける

分類Dev

Pytorch Inner Product of 3D tensor with 1D Tensor to generate 2D Tensor

分類Dev

Conv2Dレイヤーフィルターの重みを取得する方法

分類Dev

conv2dレイヤーがndim = 4入力を必要とするのはなぜですか?

分類Dev

Tensor Flowの関数assign_add()に関する混乱

分類Dev

Given a tensor flow model graph, how to find the input node and output node names

分類Dev

get result from tensor flow model

分類Dev

SeparableConv2DレイヤーとConv2Dレイヤーの違いは何ですか?

分類Dev

Conv2dレイヤーに重みを手動で割り当てる

分類Dev

Python 3.6 Tensor Flow:名前 'nccl_ops'をインポートできません

分類Dev

Python Tensor Flow Training-値エラー:TensorはTensorと同じグラフからのものである必要があります

分類Dev

Conv2DとLeakyReLUを1つのレイヤーに結合できますか?

分類Dev

gensimでword2vec2tensorを使用する方法は?

分類Dev

Kotlin Flow onBackpressureDrop RxJava2 analog

分類Dev

CNNでドロップアウトする前に複数のConv2Dレイヤーをスタックする背後にある直感

分類Dev

conv2d後のPyTorchCNN線形レイヤー形状

分類Dev

ケラスのConv2Dからレイヤーの重みを正しく取得するにはどうすればよいですか?

分類Dev

線形レイヤーの出力をPyTorchのConv2Dに提供するにはどうすればよいですか?

分類Dev

モデルや実行中のセッションなしでConv2Dレイヤーを使用することは可能ですか?

分類Dev

Flaskで複数のカスタムtensor2tensor問題をインポートする

Related 関連記事

  1. 1

    自分のデータセットのKerasのConv2Dレイヤーでinput_shapeを定義する方法を理解するのに問題があります

  2. 2

    conv2dやtensor操作などの既存の操作を使用してPythonのtensorflowでカスタムレイヤーを作成できますか?

  3. 3

    Keras Conv2Dレイヤーの最初の引数を理解する方法は?

  4. 4

    Keras: `Input`レイヤーを使用すると" Found:Tensor( "input_1:0"、shape =(None、256、256、2)、dtype = float32) "エラーが発生する

  5. 5

    Keras:別のConv2Dレイヤーで再利用するためにConv2Dレイヤーのカーネルを転置する

  6. 6

    KerasでConv2Dレイヤーの後に出力を表示することは可能ですか?

  7. 7

    Tensor-flowとKerasをインストールするRaspberryPi

  8. 8

    特定のサイズのconv2dレイヤーでパディングを使用する方法

  9. 9

    2つの並列conv2dレイヤー(keras)

  10. 10

    Tensorflowでconv2dレイヤーの重みを見つける

  11. 11

    Pytorch Inner Product of 3D tensor with 1D Tensor to generate 2D Tensor

  12. 12

    Conv2Dレイヤーフィルターの重みを取得する方法

  13. 13

    conv2dレイヤーがndim = 4入力を必要とするのはなぜですか?

  14. 14

    Tensor Flowの関数assign_add()に関する混乱

  15. 15

    Given a tensor flow model graph, how to find the input node and output node names

  16. 16

    get result from tensor flow model

  17. 17

    SeparableConv2DレイヤーとConv2Dレイヤーの違いは何ですか?

  18. 18

    Conv2dレイヤーに重みを手動で割り当てる

  19. 19

    Python 3.6 Tensor Flow:名前 'nccl_ops'をインポートできません

  20. 20

    Python Tensor Flow Training-値エラー:TensorはTensorと同じグラフからのものである必要があります

  21. 21

    Conv2DとLeakyReLUを1つのレイヤーに結合できますか?

  22. 22

    gensimでword2vec2tensorを使用する方法は?

  23. 23

    Kotlin Flow onBackpressureDrop RxJava2 analog

  24. 24

    CNNでドロップアウトする前に複数のConv2Dレイヤーをスタックする背後にある直感

  25. 25

    conv2d後のPyTorchCNN線形レイヤー形状

  26. 26

    ケラスのConv2Dからレイヤーの重みを正しく取得するにはどうすればよいですか?

  27. 27

    線形レイヤーの出力をPyTorchのConv2Dに提供するにはどうすればよいですか?

  28. 28

    モデルや実行中のセッションなしでConv2Dレイヤーを使用することは可能ですか?

  29. 29

    Flaskで複数のカスタムtensor2tensor問題をインポートする

ホットタグ

アーカイブ