1. 程式人生 > 程式設計 >tensorflow 實現自定義layer並新增到計算圖中

tensorflow 實現自定義layer並新增到計算圖中

目的

將使用者自定義的layer結合tensorflow自帶的layer組成多層layer的計算圖。

實現功能

對2D影象進行滑動視窗平均,並通過自定義的操作layer返回結果。

import tensorflow as tf
import numpy as np
sess = tf.Session()

#將size設為[1,4,1]是因為tf中影象函式是處理四維圖片的。
#這四維依次是: 圖片數量,高度, 寬度, 顏色通道
x_shape = [1,1]
x_val = np.random.uniform(size = x_shape)


#tf.nn.conv2d中name表明該layer命名為“Moving_Avg_Window”
#該卷積核為[[0.25,0.25],[0.25,0.25]],所以是一個求平均操作
x_data = tf.placeholder(tf.float32,shape = x_shape)
my_filter = tf.constant(0.25,shape = [2,2,1,1])
my_strides = [1,1]
mov_avg_layer = tf.nn.conv2d(x_data,my_filter,my_strides,padding = 'SAME',name = 'Moving_Avg_Window')


#自定義layer,對卷積操作之後的輸出做操作
def custom_layer(input_matrix):
  input_matrix_sqeeze = tf.squeeze(input_matrix)
  A = tf.constant([1.,2.],[-1.,3.])
  b = tf.constant(1.,2])
  temp1 = tf.matmul(A,input_matrix_sqeeze)
  temp2 = tf.add(temp1,b)
  return(tf.sigmod(temp2))
#把剛剛自定義的layer加入到計算圖中,並給予自定義的命名(利用tf.name_scope())
with tf.name_scope('Custom_Layer') as scope:
  custom_layer1 = custom_layer(mov_avg_layer)


#為佔位符傳入4*4圖片,並執行計算圖
print(sess.run(custom_layer,feed_dict= {x_data: x_val}))

以上這篇tensorflow 實現自定義layer並新增到計算圖中就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。