TF1.x Snippets


TF2.x Snippets

1. DataLoad

import numpy as np
dataset = tf.data.Dataset.from_tensor_slices(np.arange(10))
dataset

for item in dataset:
    print(item)

for item in dataset:
    print(item.numpy(), end=" ")

#-----------------
dataset = tf.data.Dataset.from_tensor_slices({"features": X, "label": y})
dataset


for item in dataset:
    print(item["features"].numpy(), item["label"].numpy())

2. model save & Load

2.1 Keras

#Save
model_path = './models/keras/model.json'
weights_path = './models/keras/weights.h5'

model.save(model_path)
model.save_weights(weights_path)

#Load
model = keras.models.load_model("my_mnist_model.h5")
model.load_weights("./yolov3") 
# https://github.com/YunYang1994/TensorFlow2.0-Examples/blob/master/4-Object_Detection/YOLOV3/test.py

2.2 TF

# Save 
tf.saved_model.save(model, model_path)




# load

loaded_model = tf.saved_model.load(model_path)

2.3 Numpy

weighs = np.load("./vgg16.npy", encoding='latin1').item()
for layer_name in weighs.keys():
    layer = model.get_layer(layer_name)
    layer.set_weights(weighs[layer_name])

3. 평가

def evaluate(model, images, labels):
    logits = model(images, training=False)
    correct_prediction = tf.equal(tf.argmax(logits, 1), tf.argmax(labels, 1))
    accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
    return accuracy

# train my model
print('Learning started. It takes sometime.')
for epoch in range(training_epochs):
    avg_loss = 0.
    avg_train_acc = 0.
    avg_test_acc = 0.
    train_step = 0
    test_step = 0

    for images, labels in train_dataset:
        grads = grad(model, images, labels)                
        optimizer.apply_gradients(zip(grads, model.variables))
        loss = loss_fn(model, images, labels)
        acc = evaluate(model, images, labels)
        avg_loss = avg_loss + loss
        avg_train_acc = avg_train_acc + acc
        train_step += 1
    avg_loss = avg_loss / train_step
    avg_train_acc = avg_train_acc / train_step

    for images, labels in test_dataset:        
        acc = evaluate(model, images, labels)        
        avg_test_acc = avg_test_acc + acc
        test_step += 1    
    avg_test_acc = avg_test_acc / test_step    

    print('Epoch:', '{}'.format(epoch + 1), 'loss =', '{:.8f}'.format(avg_loss), 
          'train accuracy = ', '{:.4f}'.format(avg_train_acc), 
          'test accuracy = ', '{:.4f}'.format(avg_test_acc))

    checkpoint.save(file_prefix=checkpoint_prefix)

print('Learning Finished!')

1. 모델 zoo

2. 저장 하기

2,1 모델 체크포인트 .ckpt

  • 재학습 가능 모델에대한 메타정보 포함
  • 파일 크기가 크다
  • graph.pbtxt : 노드 정보가 모두 기록, .ckpt와 같이 생성 됨, input_graph 옵션의 입력값으로 활용됨
  • tf.train.Saver().save(sess, 'trained.ckpt') :학습한 변수 값들을 ckpt 체크포인트로 저장

2.2 pb 파일

  • 재학습 불가능
  • 메타 데이타는 제외하고 모델과 가중치 값 포함 (모델의 그래프 + 학습된 변수값)
  • tensorflow API를 이용한 C++ 프로그램에서 사용하는 포맷
  • tf.train.write_graph(sess.graph_def, ".", 'trained.pb', as_text=False): 그래프 저장
[참고] trained.ckpt+ trained.pb -> frozen_graph.pb 변환 툴 : freeze_graph.py
  • out_node_names 옵션 : 자기가 사용하고자 하는 모델의 출력 노드 지정, graph.pbtxt파일 참고
  • 오류시 파일 상단 설정 부분에 --input_binary=true 추가

참고 : The tensorgraph is a example show how to generate, load graph from tensorflow

Loading and Preprocessing Data

results matching ""

    No results matching ""