前面找到了tensorflow的一維卷積、池化函數,但是官方API太簡單,網上的例子也不多。
由於沒時間研究源碼,只能另尋他法了。
后面細細想來,tensorflow的二維卷積、池化函數,好像也能進行一維卷積、池化;也就是,利用對圖像矩陣進行卷積、池化的函數,把第一個維度設置成1。
這樣做確實可行,最簡單的代碼示例如下:
import tensorflow as tf import numpy as np import pandas as pd import matplotlib.pyplot as plt sess = tf.InteractiveSession() def conv2d(x, W): return tf.nn.conv2d(x, W, strides=[1,1,1,1], padding='SAME')
def max_pool_1x2(x): return tf.nn.avg_pool(x, ksize=[1,1,2,1], strides=[1,1,2,1], padding='SAME')
'''
ksize = [x, pool_height, pool_width, x]
strides = [x, pool_height, pool_width, x]
''' x = tf.Variable([[1,2,3,4]], dtype=tf.float32) x = tf.reshape(x, [1,1,4,1]) #這一步必不可少,否則會報錯說維度不一致;
'''
[batch, in_height, in_width, in_channels] = [1,1,4,1]
''' W_conv1 = tf.Variable([1,2,1],dtype=tf.float32) W_conv1 = tf.reshape(W_conv1, [1,3,1,1]) # 這一步同樣必不可少
'''
[filter_height, filter_width, in_channels, out_channels]
''' h_conv1 = conv2d(x, W_conv1) h_pool1 = max_pool_1x2(h_conv1) tf.global_variables_initializer().run() sess.run(h_pool1) # 結果array([6,11.5])