0
풀링 계층의 출력을 밀집 계층에 연결하려고한다고 가정합니다. 이것을하기 위해서, 나는 풀링 된 텐서를 평평하게 할 필요가 있습니다. 아래의 층을 고려 : 내가 네트워크를 만들 수를 사용하고TensorFlow 레이어에서 뉴런 수를 얻는 방법은 무엇입니까?
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
을 하드 코딩하고 볼 수 있듯이. 이것을 피하는 방법?
의 크기를 말하는 방법이 없기 때문에 당신은()., to_list을 (문제를 찾을 수)'하지만 목록을 반환 치수가 일괄 처리 차원 일 때 int와'None'도 포함됩니까? 이것이 이것에 관한 유일한 길입니까? 매우 낮은 수준 인 것 같습니다. – juliohm
@juliohm 업데이트보기 –
업데이트 해 주셔서 감사합니다. @Diego, 더 많은 정보를 포함하도록 제 질문을 업데이트했습니다. 처음 시도했을 때 미안해. – juliohm