質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

558閲覧

cnn 畳み込みフィルタ 特徴マップ

reonald

総合スコア32

CNN (Convolutional Neural Network)

CNN (Convolutional Neural Network)は、全結合層のみではなく畳み込み層とプーリング層で構成されるニューラルネットワークです。画像認識において優れた性能を持ち、畳み込みニューラルネットワークとも呼ばれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/08/03 08:17

編集2021/08/03 10:05
model = tf.keras.models.Sequential() model.add( tf.keras.layers.Reshape((28, 28, 1), input_shape=(28, 28)) ) model.add( tf.keras.layers.Conv2D(16, (5, 5), padding='same', activation='relu' )) model.add( tf.keras.layers.MaxPooling2D(pool_size=(2,2)) ) model.add( tf.keras.layers.Flatten() ) model.add( tf.keras.layers.Dense(2, activation='softmax') ) model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['accuracy']) model.fit(x_train, y_train, batch_size=256, epochs=3) loss, accuracy = model.evaluate(X_test, Y_test, verbose=0) predictions = model.predict(X_test)
model.summary() weights = model.get_layer("conv2d_5").get_weights()[0] print(weights.shape) plt.imshow(weights[:,:,0,0]) コード
layer_outputs = [layer.output for layer in model.layers[1:2]] activation_model = Model(inputs=model.input, outputs=layer_outputs) activation_model.summary() コード

自作したcnnモデルの畳み込みフィルタの可視化と畳み込み演算後の特徴マップの可視化を行いたいです。
畳み込みフィルタに関しては,2個目のコードで可視化を行えました。
特徴マップを可視化する方法をお聞きしたいのですが,
3個目のコードで中間層を可視化するモデル(今はconv2D層のみ)を作成しようとしたのですが,下記エラーが発生しました。
どなたかよろしくお願い致します。

発生している問題・エラーメッセージ

TypeError Traceback (most recent call last) <ipython-input-55-1659aa1308fe> in <module> ----> 1 activation_model = Model(inputs=model.input, outputs=layer_outputs) 2 activation_model.summary() ~\Anaconda3\lib\site-packages\keras\legacy\interfaces.py in wrapper(*args, **kwargs) 89 warnings.warn('Update your `' + object_name + '` call to the ' + 90 'Keras 2 API: ' + signature, stacklevel=2) ---> 91 return func(*args, **kwargs) 92 wrapper._original_function = func 93 return wrapper ~\Anaconda3\lib\site-packages\keras\engine\network.py in __init__(self, *args, **kwargs) 92 'inputs' in kwargs and 'outputs' in kwargs): 93 # Graph network ---> 94 self._init_graph_network(*args, **kwargs) 95 else: 96 # Subclassed network ~\Anaconda3\lib\site-packages\keras\engine\network.py in _init_graph_network(self, inputs, outputs, name, **kwargs) 239 # Keep track of the network's nodes and layers. 240 nodes, nodes_by_depth, layers, layers_by_depth = _map_graph_network( --> 241 self.inputs, self.outputs) 242 self._network_nodes = nodes 243 self._nodes_by_depth = nodes_by_depth ~\Anaconda3\lib\site-packages\keras\engine\network.py in _map_graph_network(inputs, outputs) 1432 layer=layer, 1433 node_index=node_index, -> 1434 tensor_index=tensor_index) 1435 1436 for node in reversed(nodes_in_decreasing_depth): ~\Anaconda3\lib\site-packages\keras\engine\network.py in build_map(tensor, finished_nodes, nodes_in_progress, layer, node_index, tensor_index) 1413 1414 # Propagate to all previous tensors connected to this node. -> 1415 for i in range(len(node.inbound_layers)): 1416 x = node.input_tensors[i] 1417 layer = node.inbound_layers[i] TypeError: object of type 'Reshape' has no len() エラーメッセージ ### 該当のソースコード ```ここに言語名を入力 ソースコード

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/08/03 08:52 編集

> フィルタを可視化してみるとカラー画像でした。 https://biotech-lab.org/articles/2074#i-4 の「グレースケール画像の表示」みたいになってるなら、下記の変更でグレー表示になります plt.imshow(weights[:,:,0,0]) ↓ 変更 plt.imshow(weights[:,:,0,0], cmap='gray')
reonald

2021/08/03 09:54

できました。ありがとうございます。
jbpb0

2021/08/03 10:34 編集

> object of type 'Reshape' has no len() layer_outputs =... の次に print(layer_outputs) を追加し実行して、「layer_outputs」の内容を確認してみてください 「conv2d/Relu」みたいなのですか? 「reshape/Reshape」みたいなのではないですか?
reonald

2021/08/03 10:50

[<tf.Tensor 'conv2d_5/Relu:0' shape=(?, 28, 28, 16) dtype=float32>] こんな出力です。
jbpb0

2021/08/03 10:52

それなら大丈夫なはずなのですが、その後すぐに activation_model =... を実行してもエラー出るのですか?
jbpb0

2021/08/03 10:55

質問のコードには書いてませんが、もしかしたら from keras.models import Model ってやってませんか? もしやってたら、下記に変えてみてください from tensorflow.keras.models import Model
reonald

2021/08/03 11:06

無事プログラムがまわりました。 ありがとうございます。 tensorflow.kerasでモデルを作ったのに,中間層をkerasで構築しようとしたから発生したんですかね,,,
jbpb0

2021/08/03 11:09

tf.kerasとkerasは、混ぜて使ってはダメです あと、最近のTensorFlowは、Kerasとの組み合わせでは使えません どのバージョンからかは忘れました
reonald

2021/08/04 02:18

分かりました。 しっかりと覚えておきます。 ありがとうございました。
guest

回答1

0

自己解決

importの段階でtfとkerasをimportし,二つを混ぜてモデルを構築しようとしていた。

投稿2021/08/04 03:52

reonald

総合スコア32

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問