p234页 第七章使用con2v来构造卷积块
import tensorflow as tf
import numpy as np
#整体架构
#定义M 输入 reshape调整格式
#使用get_variable来定义过滤器权重变量
#参数声明为一个四维矩阵其中前两个维度表示过滤器大小,第三个维度是本层深度,最后一个表示过滤器深度
#使用get_variable来定义过滤器偏置值 [1]表示过滤器深度
#使用con2d构造卷积层前向传播算法
#构造bias_add函数来给不同位置上的神经元加上偏置
#运行
M = np.array([[[2], [1], [2], [-1]], [[0], [-1], [3], [0]], [[2], [1], [-1], [4]],
[[-2], [0], [-3], [4]]], dtype="float32").reshape(1, 4, 4, 1)
filter_weight = get_variable("weight",[2,2,1,1],initializer=tf.constant([[-1,4],[2,1]]))
biases = tf.get_variable("biase",[1],initializer = tf.conatant(0))\
x = tf.placeholder('float32',[None,1,1.None])
conv = tf.nn.conv2d(x, filter_weight,stride[1,1,1,1],padding="SAME")
add_biase = tf.nn.bias_add(conv,bias)
init_op = tf.global_variables_initializer()
with tf.Seess as sess:
init_op.run()
M_conv = sess.run(add_bias,feed_dict={x:M})
print("M after convolution: \n",M_conv)
遇到两个错误:
一个array cannot reshape to (1,4,4,1)
这个错误是由于定义M时 多打了一组数,变成了4 X 5 ,无法正常reshape(1,4,4,1)
另一个是 unhashable type 是由于定义权重变量时,少打了中括号