第一步:导入相应的库
import tensorflow as tf
import numpy as np
- 1
- 2
第二步:准备数据(随机生成一维数据)
data_size=25
x_data=np.random.normal(size=data_size)
x_input_1d=tf.placeholder(dtype=tf.float32,shape=[x_data])
- 1
- 2
- 3
第三步:搭建一个简单的卷积层,并输出(这里进行扩维是因为原始数据是一维的,我们需要把它扩到四维进行计算)
def conv_1d(input_1d,my_filter):
input_2d=tf.expand_dims(input_1d,0)
input_3d=tf.expand_dims(input_2d,0)
input_4d=tf.expand_dims(input_3d,3)
conv_output=tf.nn.conv2d(input_4d,my_filter,strides=[1,1,1,1],padding="VALID")
conv_output_1d=tf.squeeze(conv_output)
return (conv_output_1d)
my_filter=tf.Variable(tf.random_normal(shape=[1,1,5,1])) #类似于窗口大小
#卷积输出
my_conv_output=conv_1d(x_input_1d,my_filter=my_filter)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
第四步:定义一个激活函数
def activation(my_conv_output):
return tf.nn.sigmoid(my_conv_output)
- 1
- 2
第五步:池化层搭建,并输出(扩维的原因与上面类似)
def max_pooling(input_1d,width):
input_2d=tf.expand_dims(input_1d,0)
input_3d=tf.expand_dims(input_2d,0)
input_4d=tf.expand_dims(input_3d,3)
max_pool_output=tf.nn.max_pool(input_4d,ksize=[1,1,width,1],strides=[1,1,1,1],padding="VALID")
max_pool_output_1d=tf.squeeze(max_pool_output)
return (max_pool_output_1d)
my_max_output=max_pooling(conv_out,5)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
第六步:搭建全连接层,并输出
def fully_connect_layer(input_layer,output_nums):
weight_shape=tf.squeeze(tf.stack([tf.shape(input_layer),[output_nums]]))
weight=tf.Variable(tf.random_normal(shape=weight_shape,stddev=0.1))
bias=tf.Variable(tf.random_normal(shape=[output_nums]))
#进行矩阵相乘时,先将一维数组转换成矩阵
input_2d=tf.expand_dims(input_layer,0)
full_output=tf.add(tf.matmul(input_2d,weight),bias)
full_output_1d=tf.squeeze(full_output)
return (full_output_1d)
#全连接层的输出
my_full_output=fully_connect_layer(my_max_output,5)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
第七步:创建会话,并初始化所有变量
sess=tf.Session()
init=tf.global_variables_initializer()
sess.run(init)
#获取变量值
feed_dict={x_input_1d:x_data}
- 1
- 2
- 3
- 4
- 5
- 6
最后一步:输出
print("CONV"+sess.run(my_conv_output,feed_dict=feed_dict))
print("Max_pool"+sess.run(my_max_output,feed_dict=feed_dict))
print("Full_output"+sess.run(my_full_output,feed_dict=feed_dict))