Я разрабатываю конвертер речи в текст и использую сахарозаменитель. Я хочу проверять модель каждые 10 минут. На самом деле я использую Google Colab, поэтому я выбрал каталог на диске, чтобы сохранить модель. Можно ли начать тренировку после паузы (на самом деле я имею в виду закрытие браузера). Кто-нибудь может мне помочь. Я знаю, что это возможно в керасе и тензорном потоке, но я впервые использовал сахарозаводчик, и sg_train сохраняет здесь тренировочную модель. Это обучающий файл train.py.
import sugartensor as tf
from data import SpeechCorpus, voca_size
from model import *
# set log level to debug
tf.sg_verbosity(10)
#
# hyper parameters
#
batch_size = 16 # total batch size
#
# inputs
#
# corpus input tensor
data = SpeechCorpus(batch_size=batch_size * tf.sg_gpus())
# mfcc feature of audio
inputs = tf.split(data.mfcc, tf.sg_gpus(), axis=0)
# target sentence label
labels = tf.split(data.label, tf.sg_gpus(), axis=0)
# sequence length except zero-padding
seq_len = []
for input_ in inputs:
seq_len.append(tf.not_equal(input_.sg_sum(axis=2), 0.).sg_int().sg_sum(axis=1))
# parallel loss tower
@tf.sg_parallel
def get_loss(opt):
# encode audio feature
logit = get_logit(opt.input[opt.gpu_index], voca_size=voca_size)
# CTC loss
return logit.sg_ctc(target=opt.target[opt.gpu_index], seq_len=opt.seq_len[opt.gpu_index])
#
# train
#
tf.sg_train(lr=0.0001, loss=get_loss(input=inputs, target=labels, seq_len=seq_len),
ep_size=data.num_batch, max_ep=50,save_dir="/content/drive/My Drive/8Sem/train")
и ниже одного - model.py
import sugartensor as tf
num_blocks = 3 # dilated blocks
num_dim = 128 # latent dimension
#
# logit calculating graph using atrous convolution
#
def get_logit(x, voca_size):
# residual block
def res_block(tensor, size, rate, block, dim=num_dim):
with tf.sg_context(name='block_%d_%d' % (block, rate)):
# filter convolution
conv_filter = tensor.sg_aconv1d(size=size, rate=rate, act='tanh', bn=True, name='conv_filter')
# gate convolution
conv_gate = tensor.sg_aconv1d(size=size, rate=rate, act='sigmoid', bn=True, name='conv_gate')
# output by gate multiplying
out = conv_filter * conv_gate
# final output
out = out.sg_conv1d(size=1, dim=dim, act='tanh', bn=True, name='conv_out')
# residual and skip output
return out + tensor, out
# expand dimension
with tf.sg_context(name='front'):
z = x.sg_conv1d(size=1, dim=num_dim, act='tanh', bn=True, name='conv_in')
# dilated conv block loop
skip = 0 # skip connections
for i in range(num_blocks):
for r in [1, 2, 4, 8, 16]:
z, s = res_block(z, size=7, rate=r, block=i)
skip += s
# final logit layers
with tf.sg_context(name='logit'):
logit = (skip
.sg_conv1d(size=1, act='tanh', bn=True, name='conv_1')
.sg_conv1d(size=1, dim=voca_size, name='conv_2'))
return logit
Я хочу возобновить с того места, где я ушел, когда я снова запустил train.py в colab. Как мне это сделать?