gpt4 book ai didi

python - 如何获取TensorFlow层中的神经元数量?

转载 作者:太空宇宙 更新时间:2023-11-03 14:25:29 25 4
gpt4 key购买 nike

假设我尝试将池化层的输出连接到密集层。为了做到这一点,我需要展平池张量。考虑下面的层:

def conv_layer(input, in_channels, out_channels, name="conv"):
w = tf.get_variable("W", initializer=tf.truncated_normal([3, 3, in_channels, out_channels], stddev=0.1))
b = tf.get_variable("B", initializer=tf.constant(0.1, shape=[out_channels]))
conv = tf.nn.conv2d(input, w, strides=[1,1,1,1], padding="SAME")
act = tf.nn.relu(conv + b)
return act

def pool_layer(input, name="pool"):
pool = tf.nn.max_pool(input, ksize=[1,2,2,1], strides=[1,2,2,1], padding="SAME")
return pool

def dense_layer(input, size_in, size_out, name="dense"):
w = tf.get_variable("W", initializer=tf.truncated_normal([size_in, size_out], stddev=0.1))
b = tf.get_variable("B", initializer=tf.constant(0.1, shape=[size_out]))
act = tf.nn.relu(tf.matmul(input, w) + b)
return act

我正在使用它们创建一个网络:

def cnn_model(x):
x_image = tf.reshape(x, [-1, nseries, present_window, 1])
conv1 = conv_layer(x_image, 1, 32, "conv1")
pool1 = pool_layer(conv1, "pool1")
conv2 = conv_layer(pool1, 32, 64, "conv2")
pool2 = pool_layer(conv2, "pool2")
nflat = 17*15*64 # hard-coded
flat = tf.reshape(pool2, [-1, nflat])
yhat = dense_layer(flat, nflat, future_window, "dense1")
return yhat

如您所见,我对变量 nflat 进行了硬编码。如何避免这种情况?

最佳答案

如果它是张量pool.get_shape()应该适用于Keras或Tensorflow。

这实际上会返回一个包含每个维度大小的元组,因此您需要从中进行选择,在您的情况下可能是第二个。

如果输入实际上是您的输入(没有任何其他层),那么您为什么要进行最大池化?您不是在寻找dropout吗?

如果批量大小是可变的,您确实会发现一个问题,因为无法告诉模型reshape的大小

关于python - 如何获取TensorFlow层中的神经元数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com