André Claudino
André Claudino
https://www.linkedin.com/in/andreclaudino/
https://github.com/andreclaudino
http://t.me/aclaudino
PhD. Física Computacional
(Física Matemática com IA simbólica)
time: IA Front
Inteligência
=
habilidade de generalizar
Como generalizar artificialmente?
Aprende a relacionar características comuns a exemplos
Aprende a relacionar características comuns, apenas
Aprende qual ação tomar em busca de recompensa
Aprende qual ação tomar em busca de recompensa
Aprende a gerar itens parecidos com a entrada
Aprende a gerar itens parecidos com a entrada
Criar modelo para inferir grupos semânticos de produtos
Microdados
git clone git@github.com:IABrasil/inferir-grupos.git
cd inferir-grupos
python3 -m virtualenv venv
source venv/bin/activationRede neural
Funciona otimizando o comportamento de um conjunto de neurônios organizados numa camada
Neurônio
Camada
Usa os gradientes para otimizar os neurônios
def training_step(model, features, labels, optimizer):
with tf.GradientTape() as tape:
tape.watch(model.trainable_variables)
predicted = model(features, training=True)
loss = sigmoid_loss(predicted, labels)
gradients = tape\
.gradient(loss, model.trainable_variables)
grads_per_vars = zip(gradients, model.trainable_variables)
optimizer.apply_gradients(grads_per_vars)
Repete o processo para os elementos no conjunto de treino
def train(model: ClassifierModel, dataset: tf.data.Dataset,
save_path: str, summary_step: int, save_step: int,
optimizer):
for features, label in dataset:
training_step(model, features, label, optimizer)
last_step = model.last_step.value()
if last_step % summary_step == 0:
model.summary()
if last_step % save_step == 0:
model.save(save_path)K-Means
Treina k-means num único lote grande
def input_fn():
tensor = tf.convert_to_tensor(batch, dtype=tf.float32)
return tf.compat.v1.train.limit_epochs(tensor, num_epochs=1)
num_clusters = 2
kmeans = tf.compat.v1.estimator\
.experimental\
.KMeans(num_clusters=num_clusters,
use_mini_batch=False)
for _ in np.arange(num_iterations):
kmeans.train(input_fn)
accuracy = calculate_accuracy(input_fn, kmeans, labels)
print(accuracy.numpy())Adicione uma etapa de validação no modelo supervisionado com dados não utilizados em treino
def train(model: ClassifierModel,
train_dataset: tf.data.Dataset,
validation_dataset: tf.data.Dataset,
save_path: str, summary_step: int, save_step: int,
validation_step: int, optimizer):
for features, label in dataset:
training_step(model, features, label, optimizer)
last_step = model.last_step.value()
if last_step % validation_step == 0:
validate_step(model, validation_dataset)
if last_step % summary_step == 0:
model.summary()
if last_step % save_step == 0:
model.save(save_path)Faça treinos por batches no modelo k-means (terça)
dataset = load_dataset_for_unsupervised(
source_directory, batch_size, repeats=1)
.as_numpy_iterator()
for batch, labels in dataset:
def input_fn():
return tf.compat.v1.train.limit_epochs(
tf.convert_to_tensor(batch, dtype=tf.float32),
num_epochs=1)
kmeans.train(input_fn)
accuracy = calculate_accuracy(input_fn, kmeans, labels)
print(accuracy.numpy())