kerasからtf.kerasへの変換:高密度レイヤーの寸法が定義されていませんか?

Jack98

だから私は純粋なを使用してconvnetを構築しましたkeras意図したとおりにコンパイルおよび動作しますtf.kerasが、を使用できるように変換して使用する必要がありtfmotます。ドキュメントを読んだ後、変換しようとしましたが、次のエラーが発生しました。

The last dimension of the inputs to Dense should be defined. Found None.

私が間違っていることについて何か考えはありますか?

ありがとう!

元のkerasモデル:

input_layer = keras.layers.Input(shape=(100,))
reshape_layer = keras.layers.Reshape((-1, 100, 1))(input_layer)
conv_layer_1 = keras.layers.Convolution2D(filters=30, kernel_size=(10, 1), strides=(1, 1), padding="same", activation="relu")(reshape_layer)
conv_layer_2 = keras.layers.Convolution2D(filters=30, kernel_size=(8, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_1)
conv_layer_3 = keras.layers.Convolution2D(filters=40, kernel_size=(6, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_2)
conv_layer_4 = keras.layers.Convolution2D(filters=50, kernel_size=(5, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_3)
conv_layer_5 = keras.layers.Convolution2D(filters=50, kernel_size=(5, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_4)
flatten_layer = keras.layers.Flatten()(conv_layer_5)
label_layer = keras.layers.Dense(200, activation="relu")(flatten_layer)
output_layer = keras.layers.Dense(1, activation="linear")(label_layer)

model = keras.Model(inputs=input_layer, outputs=output_layer)

変換されたtf.kerasモデル:

input_layer = tf.keras.layers.InputLayer(input_shape=(100,))
reshape_layer = tf.keras.layers.Reshape((-1, 100, 1))(input_layer)
conv_layer_1 = tf.keras.layers.Convolution2D(filters=30, kernel_size=(10, 1), strides=(1, 1), padding="same", activation="relu")(reshape_layer)
conv_layer_2 = tf.keras.layers.Convolution2D(filters=30, kernel_size=(8, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_1)
conv_layer_3 = tf.keras.layers.Convolution2D(filters=40, kernel_size=(6, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_2)
conv_layer_4 = tf.keras.layers.Convolution2D(filters=50, kernel_size=(5, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_3)
conv_layer_5 = tf.keras.layers.Convolution2D(filters=50, kernel_size=(5, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_4)
flatten_layer = tf.keras.layers.Flatten()(conv_layer_5)
label_layer = tf.keras.layers.Dense(200, activation="relu")(flatten_layer)
output_layer = tf.keras.layers.Dense(1, activation="linear")(label_layer)

model = tf.keras.Model(inputs=input_layer, outputs=output_layer)

編集1:

keras作成後モデルを保存し、tf.kerasコンパイル/トレーニングの直前にモデルとしてロードすることで、問題を回避できるのではないかと思いましたそれは同じエラーをスローします!

したがってhv89

コードにいくつかの問題があります。それらを修正すれば、あなたは行ってもいいはずです、

問題1:Input代わりに使用するInputLayer

標準では、Input代わりにレイヤーを使用しますInputLayer(実際にはInputLayer内部で使用します)。またレイヤーを使用input_shapeしてshapeいる場合はに変更する必要がありますInput

input_layer = tf.keras.layers.Input(shape=(100,))

問題2:None出力の2次元

次の行を実行すると、None出力に2つの次元が含まれます。

reshape_layer = tf.keras.layers.Reshape((-1, 100, 1))(input_layer)

これが、上記のエラーが発生する理由です。Reshapeレイヤーを定義するときは、batchディメンションを定義しません。ディメンションは「なし」になります。そして、それはあなたがレイヤーNoneを使いたいかのようにあなたが持つことができる唯一の次元ですDenseそうしDenseないと、レイヤーはその重みの形状を推測できません(これがエラーが発生する理由です)。に変更して、

reshape_layer = tf.keras.layers.Reshape((1, 100, 1))(input_layer)

残りは同じままです。

conv_layer_1 = tf.keras.layers.Convolution2D(filters=30, kernel_size=(10, 1), strides=(1, 1), padding="same", activation="relu")(reshape_layer)
conv_layer_2 = tf.keras.layers.Convolution2D(filters=30, kernel_size=(8, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_1)
conv_layer_3 = tf.keras.layers.Convolution2D(filters=40, kernel_size=(6, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_2)
conv_layer_4 = tf.keras.layers.Convolution2D(filters=50, kernel_size=(5, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_3)
conv_layer_5 = tf.keras.layers.Convolution2D(filters=50, kernel_size=(5, 1), strides=(1, 1), padding="same", activation="relu")(conv_layer_4)
flatten_layer = tf.keras.layers.Flatten()(conv_layer_5)
label_layer = tf.keras.layers.Dense(200, activation="relu")(flatten_layer)
output_layer = tf.keras.layers.Dense(1, activation="linear")(label_layer)

model = tf.keras.Model(inputs=input_layer, outputs=output_layer)
model.summary()

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Keras高密度レイヤーの入力は平坦化されません

分類Dev

この高密度レイヤーはどのようにその寸法を計算しますか?

分類Dev

kerasまたはTensorflowのLSTMレイヤーの前に高密度レイヤーを追加しますか?

分類Dev

TF1.12から1.10に移行した後の高密度レイヤーの出力形状が間違っています

分類Dev

高密度レイヤーからのLSTM初期状態

分類Dev

Kerasの1DCNN:プールされたフィーチャから高密度レイヤーにフラット化するとValueErrorが発生します

分類Dev

AttributeError: 'NoneType'オブジェクトに属性 '_inbound_nodes'がありませんが、複数のkeras高密度レイヤーを追加しようとしています

分類Dev

tf.kerasのシーケンシャルレイヤーとしてsoftmaxを使用することと、高密度レイヤーの活性化関数としてsoftmaxを使用することの違いは何ですか?

分類Dev

Keras-高密度レイヤーとConvolution2Dレイヤーの融合

分類Dev

KerasのResNet50に最上位の高密度レイヤーを追加するにはどうすればよいですか?

分類Dev

CNN Kerasで高密度レイヤーの入力サイズを修正するにはどうすればよいですか?

分類Dev

Tensorflowで高密度レイヤーのバイアスをゼロに設定できますか?

分類Dev

keras高密度レイヤーのtop-k要素を選択する方法は?

分類Dev

.tfrecordからtf.data.Datasetからtf.keras.model.fitへ

分類Dev

TensorflowでLSTMの高密度レイヤー出力を取得するにはどうすればよいですか?

分類Dev

単一の高密度レイヤーでTimeDistributedを使用することに違いはありますか?

分類Dev

tfとtf.keras高密度レイヤーは私のセットアップで完全に異なる動作を示します

分類Dev

埋め込みレイヤーと高密度レイヤーの違いは何ですか?

分類Dev

予測データの次元として高密度レイヤーユニットを理解するにはどうすればよいですか?

分類Dev

Kerasチュートリアルエラー:NameError:名前 'レイヤー'が定義されていません

分類Dev

Kerasのタイムステップごとに異なる高密度レイヤーを適用する方法

分類Dev

モデルのフィッティングと予測中に高密度レイヤーのinput_shapesに違いがあるのはなぜですか?

分類Dev

VGG19Conv4-1レイヤーのKeras出力寸法がモデル出力と一致しません

分類Dev

ボトルネック機能から高密度レイヤーをトレーニングするか、最後のレイヤーを除くすべてのレイヤーをフリーズするかは同じである必要がありますが、動作が異なります

分類Dev

Keras / TFからの互換性のない形状エラーの不明な値

分類Dev

モデル入力は `tf.keras.Input`から取得する必要があります...、それらは前の非入力レイヤーの出力であってはなりません

分類Dev

スコープ ''から参照されるタイプ ''の変数 ''ですが、定義されていません

分類Dev

「スコープ ''から参照されるタイプ ''の変数 ''ですが、定義されていません」

分類Dev

DOMDocumentが定義されていませんか?XMLへのデータの保存

Related 関連記事

  1. 1

    Keras高密度レイヤーの入力は平坦化されません

  2. 2

    この高密度レイヤーはどのようにその寸法を計算しますか?

  3. 3

    kerasまたはTensorflowのLSTMレイヤーの前に高密度レイヤーを追加しますか?

  4. 4

    TF1.12から1.10に移行した後の高密度レイヤーの出力形状が間違っています

  5. 5

    高密度レイヤーからのLSTM初期状態

  6. 6

    Kerasの1DCNN:プールされたフィーチャから高密度レイヤーにフラット化するとValueErrorが発生します

  7. 7

    AttributeError: 'NoneType'オブジェクトに属性 '_inbound_nodes'がありませんが、複数のkeras高密度レイヤーを追加しようとしています

  8. 8

    tf.kerasのシーケンシャルレイヤーとしてsoftmaxを使用することと、高密度レイヤーの活性化関数としてsoftmaxを使用することの違いは何ですか?

  9. 9

    Keras-高密度レイヤーとConvolution2Dレイヤーの融合

  10. 10

    KerasのResNet50に最上位の高密度レイヤーを追加するにはどうすればよいですか?

  11. 11

    CNN Kerasで高密度レイヤーの入力サイズを修正するにはどうすればよいですか?

  12. 12

    Tensorflowで高密度レイヤーのバイアスをゼロに設定できますか?

  13. 13

    keras高密度レイヤーのtop-k要素を選択する方法は?

  14. 14

    .tfrecordからtf.data.Datasetからtf.keras.model.fitへ

  15. 15

    TensorflowでLSTMの高密度レイヤー出力を取得するにはどうすればよいですか?

  16. 16

    単一の高密度レイヤーでTimeDistributedを使用することに違いはありますか?

  17. 17

    tfとtf.keras高密度レイヤーは私のセットアップで完全に異なる動作を示します

  18. 18

    埋め込みレイヤーと高密度レイヤーの違いは何ですか?

  19. 19

    予測データの次元として高密度レイヤーユニットを理解するにはどうすればよいですか?

  20. 20

    Kerasチュートリアルエラー:NameError:名前 'レイヤー'が定義されていません

  21. 21

    Kerasのタイムステップごとに異なる高密度レイヤーを適用する方法

  22. 22

    モデルのフィッティングと予測中に高密度レイヤーのinput_shapesに違いがあるのはなぜですか?

  23. 23

    VGG19Conv4-1レイヤーのKeras出力寸法がモデル出力と一致しません

  24. 24

    ボトルネック機能から高密度レイヤーをトレーニングするか、最後のレイヤーを除くすべてのレイヤーをフリーズするかは同じである必要がありますが、動作が異なります

  25. 25

    Keras / TFからの互換性のない形状エラーの不明な値

  26. 26

    モデル入力は `tf.keras.Input`から取得する必要があります...、それらは前の非入力レイヤーの出力であってはなりません

  27. 27

    スコープ ''から参照されるタイプ ''の変数 ''ですが、定義されていません

  28. 28

    「スコープ ''から参照されるタイプ ''の変数 ''ですが、定義されていません」

  29. 29

    DOMDocumentが定義されていませんか?XMLへのデータの保存

ホットタグ

アーカイブ