tf.layers包中包含图层定义函数,该函数不包含要训练的显式张量。例如,layers.conv2d
没有像nn.conv2d
那样的filter
张量。
tensorflow如何找到适合的变量?
如果我混合layers
和nn
的操作,我怎样才能以相同的方式提供变量?
假设,我收集变量以进入列表:
weights = tf.Variable(tf.truncated_normal([kernel_size[0], kernel_size[0], input_depth, filters],
dtype=tf.float32, stddev=self.init_stddev), trainable=True)
self.var_list.append(weights)
biases = tf.Variable(tf.truncated_normal([filters], dtype=tf.float32, stddev=self.init_stddev), trainable=True)
self.var_list.append(biases)
x = tf.nn.conv2d(x, weights, [1, 1, 1, 1], padding=padding)
x = tf.nn.bias_add(x, biases)
然后
self.step = opt.minimize(self.cross_entropy, var_list=self.var_list)
答案 0 :(得分:1)
我对你的问题有点困惑。当然,tf.layers.conv2d具有用于定义张量的参数(第二个):
tf.layers.conv2d conv2d( 输入, 过滤器, kernel_size, strides =(1,1), 填充=“有效”, DATA_FORMAT = 'channels_last', dilation_rate =(1,1), 活化=无, use_bias =真, kernel_initializer =无, bias_initializer = tf.zeros_initializer(), kernel_regularizer =无, bias_regularizer =无, activity_regularizer =无, kernel_constraint =无, bias_constraint =无, 可训练=真, 名称=无, 重用=无 )
此外,在tensorflow文档中,明确提到:
tf.nn.conv2d - 在给定4-D输入和滤波器张量的情况下计算2-D卷积。
所以你应该使用tf.layers.conv2d构建网络,使用tf.nn.conv2d进行计算。