if __name__ == '__main__': cnn = SimpleConvNet() # 학습시키기 전 파라미터 - 임의의 값들로 최기화된 필터 before_filters = cnn.params['W1'] print(before_filters.shape ) # (30, 1, 5, 5) # (filter_num, n_channel, filter size 5 * 5) # 학습 전 파라미터를 그래프로 출력 show_filters(before_filters, num_filters=30, ncols=8) # 학습 끝난 후 파라미터 # after_params = cnn.load_params('cnn_params.pkl') # after_filters = after_params['W1'] # load_params 에 리턴값이 없어서 에러가 났다 # pickle 파일에 저장된 파라미터를 cnn의 필드로 로드 cnn.load_params('cnn_params.pkl') after_filters = cnn.params['W1'] # 학습 끝난 후 갱신(업데이트)된 파라미터를 그래프로 출력 show_filters(after_filters, 30, 8) # 실제 이미지에 적용 cnn = SimpleConvNet() # 학습시키기 전 파라미터 - 임의의 값들로 최기화된 필터 before_filters = cnn.params['W1'] print(before_filters.shape ) # (30, 1, 5, 5) # (filter_num, n_channel, filter size 5 * 5) # 학습 전 파라미터를 그래프로 출력 show_filters(before_filters, num_filters=16, ncols=4) # 학습 끝난 후 파라미터 # after_params = cnn.load_params('cnn_params.pkl')
from ch07.simple_convnet import SimpleConvNet def filter_show(filters, nx=8, margin=3, scale=10): """ c.f. https://gist.github.com/aidiary/07d530d5e08011832b12#file-draw_weight-py """ FN, C, FH, FW = filters.shape ny = int(np.ceil(FN / nx)) fig = plt.figure() fig.subplots_adjust(left=0, right=1, bottom=0, top=1, hspace=0.05, wspace=0.05) for i in range(FN): ax = fig.add_subplot(ny, nx, i + 1, xticks=[], yticks=[]) ax.imshow(filters[i, 0], cmap=plt.cm.gray_r, interpolation='nearest') plt.show() network = SimpleConvNet() # ランダム初期化後の重み filter_show(network.params['W1']) # 学習後の重み network.load_params("params.pkl") filter_show(network.params['W1'])