张量流核心的标准工作方式

时间:2019-05-15 10:23:33

标签: tensorflow keras

通常,在使用诸如keras之类的高级API时,我们不会专门定义layers参数。但是在使用tensorflow核心时,所有模型的参数和权重都是专门定义的。

W1 = tf.Variable(tf.random_normal([filt1_features,
filt1_features, no_channels, conv1_features]))
b1 = tf.Variable(tf.ones([conv1_features]))
W2 = tf.Variable(tf.random_normal([filt2_features,
filt2_features, conv1_features, conv2_features]))
b2 = tf.Variable(tf.ones([conv2_features]))

还创建了辅助函数:

 # Define helper functions for the convolution and maxpool layers:
 def conv_layer(x, W, b):
   conv = tf.nn.conv2d(x, W, strides=[1, 1, 1, 1],
     padding='SAME')
   conv_with_b = tf.nn.bias_add(conv, b)
   conv_out = tf.nn.relu(conv_with_b)
   return conv_out
 def maxpool_layer(conv, k=2):
   return tf.nn.max_pool(conv, ksize=[1, k, k, 1],
    strides=[1, k, k, 1], padding='SAME')

这是标准的做法吗?

1 个答案:

答案 0 :(得分:1)

这是底层API。最初,这是在TensorFlow中做事的唯一方法。如果您想使用低电平,则可以,这是正确的方法。

您可能会想要/需要更多的灵活性,但是如果您只是要使用标准层(例如池,conv2d,模型中的完全连接),那么可能没有意义,您可以简单地使用tf .layers或tf.keras.layers api,比自己编写所有内容更快,更容易出错。

这些更高级别的api最终将完成与您上面编写的内容相同的工作,只是您不必担心自己制作变量等。