2017-12-11 12 views
1

Beim Lesen des API-Dokuments von dynamic_rnn habe ich folgende Frage:Was ist die Beziehung zwischen Batch-Größe, Sequenzlänge und hidden_size?

Gibt es Einschränkungen für die Beziehung zwischen Batch-Größe, Sequenzlänge und (Zelle) hidden_size?

Ich denke, dass:

sequenz Länge < = (Zelle) hidden_size oder,

Batch-Größe * Sequenz-Länge < = (Zelle) hidden_size

Bin ich richtig? Ich habe viele Webseiten durchgelesen, konnte aber keine Antwort finden.

Vielen Dank.

https://www.tensorflow.org/api_docs/python/tf/nn/dynamic_rnn

Beispiel:

# create a BasicRNNCell 
rnn_cell = tf.nn.rnn_cell.BasicRNNCell(hidden_size) 

# 'outputs' is a tensor of shape [batch_size, max_time, cell_state_size] 

# defining initial state 
initial_state = rnn_cell.zero_state(batch_size, dtype=tf.float32) 

# 'state' is a tensor of shape [batch_size, cell_state_size] 
outputs, state = tf.nn.dynamic_rnn(rnn_cell, input_data, 
            initial_state=initial_state, 
            dtype=tf.float32) 
# create 2 LSTMCells 
rnn_layers = [tf.nn.rnn_cell.LSTMCell(size) for size in [128, 256]] 

# create a RNN cell composed sequentially of a number of RNNCells 
multi_rnn_cell = tf.nn.rnn_cell.MultiRNNCell(rnn_layers) 

# 'outputs' is a tensor of shape [batch_size, max_time, 256] 
# 'state' is a N-tuple where N is the number of LSTMCells containing a 
# tf.contrib.rnn.LSTMStateTuple for each cell 
outputs, state = tf.nn.dynamic_rnn(cell=multi_rnn_cell, 
            inputs=data, 
            dtype=tf.float32) 

Antwort

0

Es gibt keine Beziehung, so weit das API betrifft. Korrigieren Sie zwei beliebige dieser Parameter, und der Rest kann immer noch eine beliebige nicht negative ganze Zahl sein (oder im Fall von sequence_length ein beliebiger batch_size - Längenvektor von nicht negativen ganzen Zahlen).

Das resultierende Modell kann sehr leicht überstülpen, wenn hidden_size ist riesig und es gibt sehr wenig Trainingsdaten, aber es wird immer noch funktionieren. Beachten Sie, dass Trainingsdaten normalerweise in Mini-Batches angezeigt werden, sodass die Anzahl der Trainingsdaten nicht die Summe der an dynamic_rnn übergebenen Sequenzlängen ist.

Es gibt auch Hardware-Einschränkungen, da batch_size und die maximale Sequenzlänge die Speichernutzung beeinflussen.

Verwandte Themen