Код: Выделить всё
for config in param_grid:
model = self.create_model(config)
train = model.forward(embedded_training_data)
val = model.forward(embedded_val_data)
test= model.forward(embedded_test_data)
def compute_states(self, x):
x_train_states = []
for i, layer in enumerate(self.layers):
outputs, r, b = layer(x)
x_train_states.append(outputs) # Aggiungi alla lista
x = outputs # Update input for next layer
return tf.concat(x_train_states, axis=2) if x_train_states else None
@tf.function
def forward(self, data):
total_samples = tf.shape(data)[0]
buffer_size = tf.constant(self.buffer_size, dtype=tf.int32)
num_batches = tf.cast(tf.math.ceil(total_samples / buffer_size), tf.int32)
states_array = tf.TensorArray(dtype=tf.float32, size=num_batches)
for i in tf.range(num_batches):
start_idx = i * buffer_size
end_idx = tf.minimum((i + 1) * buffer_size, total_samples)
batch = data[start_idx:end_idx]
states = self.compute_states(batch)
states_array = states_array.write(i, states)
states = states_array.concat()
return states
< /code>
Эти функции хороши и очень скорости на процессоре, но на графическом процессоре я получаю ошибку OOM при объединении партий (starts_array.concat ()). Я хотел бы знать, есть ли какие -либо проблемы в моем коде, и поэтому я мог бы оптимизировать его или если размеры тензоров неразрешимы.
Подробнее здесь: https://stackoverflow.com/questions/794 ... -dimension