각 볼륨 레이어 출력 이미지 표시
# coding=utf-8
import tensorflow as tf
import numpy as np
import pdb
from datetime import datetime
import cv2
import os
import matplotlib.pyplot as plt
def conv_imshow(path, model, layer_type, layer_name):
model_dir = "./model/" # model.ckpt
#
reader = tf.train.NewCheckpointReader(tf.train.get_checkpoint_state(model_dir).model_checkpoint_path)
im = cv2.imread(path)
im = cv2.resize(im, (224, 224)) # * (1. / 255)
in_put = np.expand_dims(im, axis=0)
in_put = tf.convert_to_tensor(in_put, dtype=tf.float32) # np tf
#
for name in model:
ind = int(np.argwhere(model == name)) #
if layer_type[ind] != 'pool': # maxpooling ,
weights = reader.get_tensor(name)
if layer_type[ind] == 'weights':
in_put = tf.nn.conv2d(in_put, weights, strides=[1, 1, 1, 1], padding='SAME')
elif layer_type[ind] == 'bias':
in_put = tf.nn.relu(tf.nn.bias_add(in_put, weights))
elif layer_type[ind] == 'pool':
in_put = tf.nn.max_pool(in_put, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='VALID')
# elif layer_type[ind] == 'fw':
# in_put = tf.matmul(in_put, weights)
# elif layer_type[ind] == 'fb':
# in_put = tf.nn.relu(tf.nn.bias_add(in_put, weights))
else:
break
if name == layer_name:
return in_put
return in_put
if __name__ == '__main__':
imgpath = './image/0.jpg' #
#
model = np.array(['conv1_1/weights', 'conv1_1/bias', 'conv1_2/weights', 'conv1_2/bias', 'pool1',
'conv2_1/weights', 'conv2_1/bias', 'conv2_2/weights', 'conv2_2/bias', 'pool2',
'conv3_1/weights', 'conv3_1/bias', 'conv3_2/weights', 'conv3_2/bias', 'conv3_3/weights', 'conv3_3/bias', 'pool3',
'conv4_1/weights', 'conv4_1/bias', 'conv4_2/weights', 'conv4_2/bias', 'conv4_3/weights', 'conv4_3/bias', 'pool4',
'conv5_1/weights', 'conv5_1/bias', 'conv5_2/weights', 'conv5_2/bias', 'conv5_3/weights', 'conv5_3/bias', 'pool5',
'fc6/weights', 'fc6/bias', 'fc7/weights', 'fc7/bias', 'fc8/weights', 'fc8/bias'])
#
layer_type = np.array(['weights', 'bias', 'weights', 'bias', 'pool',
'weights', 'bias', 'weights', 'bias', 'pool',
'weights', 'bias', 'weights', 'bias', 'weights', 'bias', 'pool',
'weights', 'bias', 'weights', 'bias', 'weights', 'bias', 'pool',
'weights', 'bias', 'weights', 'bias', 'weights', 'bias', 'pool',
'fw', 'fb', 'fw', 'fb'])
conv = conv_imshow(imgpath, model, layer_type, 'pool1')
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
img_conv = sess.run(conv)
img_conv_sum = np.sum(np.squeeze(img_conv), axis=2) #
#
plt.imshow(img_conv_sum, cmap="gray")
plt.savefig('./image/result.jpg') #
plt.show()
sess.close()
전체 연결층에서 그림을 표시할 수 없음을 주의해야 합니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[Caffe] mnist 인식 프로세스cd $CAFFE_ROOT 트레이닝 데이터 다운로드 ./data/mnist/get_mnist.sh 데이터 세트 만들기: ./examples/mnist/create_mnist.sh 트레이닝 모델: ./examples/...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.