未验证 提交 0687ceb6 编写于 作者: Z zhang wenhui 提交者: GitHub

Fix reduce (#4975)

* update api 1.8

* fix paddlerec readme

* fix

* fix

* fix 2.0

* fix 2.0

* fix 2.0

* fix 2.0

* fix 2.0

* fix
上级 ba1b19c0
...@@ -6,7 +6,6 @@ import pickle ...@@ -6,7 +6,6 @@ import pickle
import random import random
import paddle import paddle
import paddle.fluid as fluid
class DataGenerator(object): class DataGenerator(object):
...@@ -59,7 +58,7 @@ class DataGenerator(object): ...@@ -59,7 +58,7 @@ class DataGenerator(object):
if not cycle: if not cycle:
break break
return fluid.io.batch(_reader, batch_size=batch_size) return paddle.batch(_reader, batch_size=batch_size)
def data_reader(batch_size, def data_reader(batch_size,
......
...@@ -34,8 +34,7 @@ def infer(args): ...@@ -34,8 +34,7 @@ def infer(args):
# load model # load model
if args.checkpoint: if args.checkpoint:
model_dict, optimizer_dict = paddle.fluid.dygraph.load_dygraph( model_dict = paddle.load(os.path.join(args.checkpoint, ".pdparams"))
args.checkpoint)
deepfm.set_dict(model_dict) deepfm.set_dict(model_dict)
logger.info("load model {} finished.".format(args.checkpoint)) logger.info("load model {} finished.".format(args.checkpoint))
else: else:
...@@ -48,7 +47,7 @@ def infer(args): ...@@ -48,7 +47,7 @@ def infer(args):
logger.info("start eval model.") logger.info("start eval model.")
total_step = 0 total_step = 0
batch_begin = time.time() batch_begin = time.time()
auc_metric_test = paddle.fluid.metrics.Auc("ROC") auc_metric_test = paddle.metric.Auc("ROC")
for data in test_reader(): for data in test_reader():
total_step += 1 total_step += 1
raw_feat_idx, raw_feat_value, label = zip(*data) raw_feat_idx, raw_feat_value, label = zip(*data)
...@@ -72,11 +71,11 @@ def infer(args): ...@@ -72,11 +71,11 @@ def infer(args):
logger.info( logger.info(
"TEST --> batch: {} auc: {:.6f} speed: {:.2f} ins/s".format( "TEST --> batch: {} auc: {:.6f} speed: {:.2f} ins/s".format(
total_step, total_step,
auc_metric_test.eval(), 100 * args.batch_size / ( auc_metric_test.accumulate(), 100 * args.batch_size / (
time.time() - batch_begin))) time.time() - batch_begin)))
batch_begin = time.time() batch_begin = time.time()
logger.info("test auc is %.6f" % auc_metric_test.eval()) logger.info("test auc is %.6f" % auc_metric_test.accumulate())
begin = time.time() begin = time.time()
eval() eval()
......
...@@ -12,9 +12,9 @@ class DeepFM(paddle.nn.Layer): ...@@ -12,9 +12,9 @@ class DeepFM(paddle.nn.Layer):
self.dnn = DNN(args) self.dnn = DNN(args)
def forward(self, raw_feat_idx, raw_feat_value, label): def forward(self, raw_feat_idx, raw_feat_value, label):
feat_idx = paddle.fluid.layers.reshape( feat_idx = paddle.reshape(raw_feat_idx,
raw_feat_idx, [-1, 1]) # (None * num_field) * 1 [-1, 1]) # (None * num_field) * 1
feat_value = paddle.fluid.layers.reshape( feat_value = paddle.reshape(
raw_feat_value, raw_feat_value,
[-1, self.args.num_field, 1]) # None * num_field * 1 [-1, self.args.num_field, 1]) # None * num_field * 1
...@@ -33,20 +33,19 @@ class FM(paddle.nn.Layer): ...@@ -33,20 +33,19 @@ class FM(paddle.nn.Layer):
super(FM, self).__init__() super(FM, self).__init__()
self.args = args self.args = args
self.init_value_ = 0.1 self.init_value_ = 0.1
self.embedding_w = paddle.fluid.dygraph.nn.Embedding( self.embedding_w = paddle.nn.Embedding(
size=[self.args.num_feat + 1, 1], self.args.num_feat + 1,
dtype='float32', 1,
padding_idx=0, padding_idx=0,
param_attr=paddle.ParamAttr( weight_attr=paddle.ParamAttr(
initializer=paddle.nn.initializer.TruncatedNormal( initializer=paddle.nn.initializer.TruncatedNormal(
mean=0.0, std=self.init_value_), mean=0.0, std=self.init_value_),
regularizer=paddle.fluid.regularizer.L1DecayRegularizer( regularizer=paddle.regularizer.L1Decay(self.args.reg)))
self.args.reg))) self.embedding = paddle.nn.Embedding(
self.embedding = paddle.fluid.dygraph.nn.Embedding( self.args.num_feat + 1,
size=[self.args.num_feat + 1, self.args.embedding_size], self.args.embedding_size,
dtype='float32',
padding_idx=0, padding_idx=0,
param_attr=paddle.ParamAttr( weight_attr=paddle.ParamAttr(
initializer=paddle.nn.initializer.TruncatedNormal( initializer=paddle.nn.initializer.TruncatedNormal(
mean=0.0, mean=0.0,
std=self.init_value_ / std=self.init_value_ /
...@@ -55,21 +54,21 @@ class FM(paddle.nn.Layer): ...@@ -55,21 +54,21 @@ class FM(paddle.nn.Layer):
def forward(self, feat_idx, feat_value): def forward(self, feat_idx, feat_value):
# -------------------- first order term -------------------- # -------------------- first order term --------------------
first_weights_re = self.embedding_w(feat_idx) first_weights_re = self.embedding_w(feat_idx)
first_weights = paddle.fluid.layers.reshape( first_weights = paddle.reshape(
first_weights_re, first_weights_re,
shape=[-1, self.args.num_field, 1]) # None * num_field * 1 shape=[-1, self.args.num_field, 1]) # None * num_field * 1
y_first_order = paddle.reduce_sum(first_weights * feat_value, 1) y_first_order = paddle.sum(first_weights * feat_value, 1)
# -------------------- second order term -------------------- # -------------------- second order term --------------------
feat_embeddings_re = self.embedding(feat_idx) feat_embeddings_re = self.embedding(feat_idx)
feat_embeddings = paddle.fluid.layers.reshape( feat_embeddings = paddle.reshape(
feat_embeddings_re, feat_embeddings_re,
shape=[-1, self.args.num_field, self.args.embedding_size shape=[-1, self.args.num_field, self.args.embedding_size
]) # None * num_field * embedding_size ]) # None * num_field * embedding_size
feat_embeddings = feat_embeddings * feat_value # None * num_field * embedding_size feat_embeddings = feat_embeddings * feat_value # None * num_field * embedding_size
# sum_square part # sum_square part
summed_features_emb = paddle.reduce_sum(feat_embeddings, summed_features_emb = paddle.sum(feat_embeddings,
1) # None * embedding_size 1) # None * embedding_size
summed_features_emb_square = paddle.square( summed_features_emb_square = paddle.square(
summed_features_emb) # None * embedding_size summed_features_emb) # None * embedding_size
...@@ -77,13 +76,13 @@ class FM(paddle.nn.Layer): ...@@ -77,13 +76,13 @@ class FM(paddle.nn.Layer):
# square_sum part # square_sum part
squared_features_emb = paddle.square( squared_features_emb = paddle.square(
feat_embeddings) # None * num_field * embedding_size feat_embeddings) # None * num_field * embedding_size
squared_sum_features_emb = paddle.reduce_sum(squared_features_emb, squared_sum_features_emb = paddle.sum(squared_features_emb,
1) # None * embedding_size 1) # None * embedding_size
y_second_order = 0.5 * paddle.reduce_sum( y_second_order = 0.5 * paddle.sum(
summed_features_emb_square - squared_sum_features_emb, summed_features_emb_square - squared_sum_features_emb,
1, 1,
keep_dim=True) # None * 1 keepdim=True) # None * 1
return y_first_order, y_second_order, feat_embeddings return y_first_order, y_second_order, feat_embeddings
...@@ -121,7 +120,7 @@ class DNN(paddle.nn.Layer): ...@@ -121,7 +120,7 @@ class DNN(paddle.nn.Layer):
self._layers.append(act) self._layers.append(act)
def forward(self, feat_embeddings): def forward(self, feat_embeddings):
y_dnn = paddle.fluid.layers.reshape( y_dnn = paddle.reshape(
feat_embeddings, feat_embeddings,
[-1, self.args.num_field * self.args.embedding_size]) [-1, self.args.num_field * self.args.embedding_size])
for n_layer in self._layers: for n_layer in self._layers:
......
...@@ -42,7 +42,7 @@ def train(args): ...@@ -42,7 +42,7 @@ def train(args):
deepfm.eval() deepfm.eval()
logger.info("start eval model.") logger.info("start eval model.")
total_step = 0.0 total_step = 0.0
auc_metric_test = paddle.fluid.metrics.Auc("ROC") auc_metric_test = paddle.metric.Auc("ROC")
for data in test_reader(): for data in test_reader():
total_step += 1 total_step += 1
raw_feat_idx, raw_feat_value, label = zip(*data) raw_feat_idx, raw_feat_value, label = zip(*data)
...@@ -50,7 +50,8 @@ def train(args): ...@@ -50,7 +50,8 @@ def train(args):
raw_feat_value = np.array(raw_feat_value, dtype=np.float32) raw_feat_value = np.array(raw_feat_value, dtype=np.float32)
label = np.array(label, dtype=np.int64) label = np.array(label, dtype=np.int64)
raw_feat_idx, raw_feat_value, label = [ raw_feat_idx, raw_feat_value, label = [
paddle.to_tensor(data=i, dtype=None, place=None, stop_gradient=True) paddle.to_tensor(
data=i, dtype=None, place=None, stop_gradient=True)
for i in [raw_feat_idx, raw_feat_value, label] for i in [raw_feat_idx, raw_feat_value, label]
] ]
...@@ -62,21 +63,20 @@ def train(args): ...@@ -62,21 +63,20 @@ def train(args):
preds=predict_2d.numpy(), labels=label.numpy()) preds=predict_2d.numpy(), labels=label.numpy())
logger.info("test auc of epoch %d is %.6f" % logger.info("test auc of epoch %d is %.6f" %
(epoch, auc_metric_test.eval())) (epoch, auc_metric_test.accumulate()))
optimizer = paddle.optimizer.Adam( optimizer = paddle.optimizer.Adam(
parameters=deepfm.parameters(), parameters=deepfm.parameters(),
weight_decay=paddle.fluid.regularizer.L2DecayRegularizer(args.reg)) weight_decay=paddle.regularizer.L2Decay(args.reg))
# load model if exists # load model if exists
start_epoch = 0 start_epoch = 0
if args.checkpoint: if args.checkpoint:
model_dict, optimizer_dict = paddle.fluid.dygraph.load_dygraph( model_dict = paddle.load(os.path.join(args.checkpoint, ".pdparams"))
args.checkpoint) optimizer_dict = paddle.load(os.path.join(args.checkpoint, ".pdopt"))
deepfm.set_dict(model_dict) deepfm.set_dict(model_dict)
optimizer.set_dict(optimizer_dict) optimizer.set_state_dict(optimizer_dict)
start_epoch = int( start_epoch = int(os.path.basename(args.checkpoint).split("_")[
os.path.basename(args.checkpoint).split("_")[
-1]) + 1 # get next train epoch -1]) + 1 # get next train epoch
logger.info("load model {} finished.".format(args.checkpoint)) logger.info("load model {} finished.".format(args.checkpoint))
...@@ -85,7 +85,7 @@ def train(args): ...@@ -85,7 +85,7 @@ def train(args):
batch_begin = time.time() batch_begin = time.time()
batch_id = 0 batch_id = 0
total_loss = 0.0 total_loss = 0.0
auc_metric = paddle.fluid.metrics.Auc("ROC") auc_metric = paddle.metric.Auc("ROC")
logger.info("training epoch {} start.".format(epoch)) logger.info("training epoch {} start.".format(epoch))
for data in train_reader(): for data in train_reader():
...@@ -94,17 +94,17 @@ def train(args): ...@@ -94,17 +94,17 @@ def train(args):
raw_feat_value = np.array(raw_feat_value, dtype=np.float32) raw_feat_value = np.array(raw_feat_value, dtype=np.float32)
label = np.array(label, dtype=np.int64) label = np.array(label, dtype=np.int64)
raw_feat_idx, raw_feat_value, label = [ raw_feat_idx, raw_feat_value, label = [
paddle.to_tensor(data=i, dtype=None, place=None, stop_gradient=True) paddle.to_tensor(
data=i, dtype=None, place=None, stop_gradient=True)
for i in [raw_feat_idx, raw_feat_value, label] for i in [raw_feat_idx, raw_feat_value, label]
] ]
predict = deepfm(raw_feat_idx, raw_feat_value, label) predict = deepfm(raw_feat_idx, raw_feat_value, label)
loss = paddle.nn.functional.log_loss( loss = paddle.nn.functional.log_loss(
input=predict, input=predict, label=paddle.cast(
label=paddle.cast(
label, dtype="float32")) label, dtype="float32"))
batch_loss = paddle.reduce_sum(loss) batch_loss = paddle.sum(loss)
total_loss += batch_loss.numpy().item() total_loss += batch_loss.numpy().item()
...@@ -114,15 +114,13 @@ def train(args): ...@@ -114,15 +114,13 @@ def train(args):
# for auc # for auc
predict_2d = paddle.concat(x=[1 - predict, predict], axis=1) predict_2d = paddle.concat(x=[1 - predict, predict], axis=1)
auc_metric.update( auc_metric.update(preds=predict_2d.numpy(), labels=label.numpy())
preds=predict_2d.numpy(), labels=label.numpy())
if batch_id > 0 and batch_id % 100 == 0: if batch_id > 0 and batch_id % 100 == 0:
logger.info( logger.info(
"epoch: {}, batch_id: {}, loss: {:.6f}, auc: {:.6f}, speed: {:.2f} ins/s". "epoch: {}, batch_id: {}, loss: {:.6f}, auc: {:.6f}, speed: {:.2f} ins/s".
format(epoch, batch_id, total_loss / args.batch_size / format(epoch, batch_id, total_loss / args.batch_size / 100,
100, auc_metric.accumulate(), 100 * args.batch_size / (
auc_metric.eval(), 100 * args.batch_size / (
time.time() - batch_begin))) time.time() - batch_begin)))
batch_begin = time.time() batch_begin = time.time()
total_loss = 0.0 total_loss = 0.0
...@@ -131,16 +129,15 @@ def train(args): ...@@ -131,16 +129,15 @@ def train(args):
logger.info("epoch %d is finished and takes %f s" % logger.info("epoch %d is finished and takes %f s" %
(epoch, time.time() - begin)) (epoch, time.time() - begin))
# save model and optimizer # save model and optimizer
logger.info("going to save epoch {} model and optimizer.".format( logger.info("going to save epoch {} model and optimizer.".format(epoch))
epoch)) paddle.save(
paddle.fluid.dygraph.save_dygraph(
deepfm.state_dict(), deepfm.state_dict(),
model_path=os.path.join(args.model_output_dir, path=os.path.join(args.model_output_dir, "epoch_" + str(epoch),
"epoch_" + str(epoch))) ".pdparams"))
paddle.fluid.dygraph.save_dygraph( paddle.save(
optimizer.state_dict(), optimizer.state_dict(),
model_path=os.path.join(args.model_output_dir, path=os.path.join(args.model_output_dir, "epoch_" + str(epoch),
"epoch_" + str(epoch))) ".pdopt"))
logger.info("save epoch {} finished.".format(epoch)) logger.info("save epoch {} finished.".format(epoch))
# eval model # eval model
deepfm.eval() deepfm.eval()
......
...@@ -31,7 +31,7 @@ if sys.version[0] == '2': ...@@ -31,7 +31,7 @@ if sys.version[0] == '2':
sys.setdefaultencoding("utf-8") sys.setdefaultencoding("utf-8")
class SimpleGRURNN(paddle.fluid.Layer): class SimpleGRURNN(paddle.nn.Layer):
def __init__(self, def __init__(self,
hidden_size, hidden_size,
num_steps, num_steps,
...@@ -125,22 +125,20 @@ class SimpleGRURNN(paddle.fluid.Layer): ...@@ -125,22 +125,20 @@ class SimpleGRURNN(paddle.fluid.Layer):
step_input = hidden_state step_input = hidden_state
if self._dropout is not None and self._dropout > 0.0: if self._dropout is not None and self._dropout > 0.0:
step_input = paddle.fluid.layers.dropout( step_input = paddle.nn.dropout(
step_input, step_input, p=self._dropout, mode='upscale_in_train')
dropout_prob=self._dropout,
dropout_implementation='upscale_in_train')
res.append(step_input) res.append(step_input)
real_res = paddle.concat(x=res, axis=1) real_res = paddle.concat(x=res, axis=1)
real_res = paddle.fluid.layers.reshape( real_res = paddle.reshape(real_res,
real_res, [-1, self._num_steps, self._hidden_size]) [-1, self._num_steps, self._hidden_size])
last_hidden = paddle.concat(x=hidden_array, axis=1) last_hidden = paddle.concat(x=hidden_array, axis=1)
last_hidden = paddle.fluid.layers.reshape( last_hidden = paddle.reshape(
last_hidden, shape=[-1, self._num_layers, self._hidden_size]) last_hidden, shape=[-1, self._num_layers, self._hidden_size])
last_hidden = paddle.transpose(x=last_hidden, perm=[1, 0, 2]) last_hidden = paddle.transpose(x=last_hidden, perm=[1, 0, 2])
return real_res, last_hidden return real_res, last_hidden
class PtbModel(paddle.fluid.Layer): class PtbModel(paddle.nn.Layer):
def __init__(self, def __init__(self,
name_scope, name_scope,
hidden_size, hidden_size,
...@@ -158,18 +156,16 @@ class PtbModel(paddle.fluid.Layer): ...@@ -158,18 +156,16 @@ class PtbModel(paddle.fluid.Layer):
self.num_steps = num_steps self.num_steps = num_steps
self.dropout = dropout self.dropout = dropout
self.simple_gru_rnn = SimpleGRURNN( self.simple_gru_rnn = SimpleGRURNN(
#self.full_name(),
hidden_size, hidden_size,
num_steps, num_steps,
num_layers=num_layers, num_layers=num_layers,
init_scale=init_scale, init_scale=init_scale,
dropout=dropout) dropout=dropout)
self.embedding = paddle.fluid.dygraph.nn.Embedding( self.embedding = paddle.nn.Embedding(
#self.full_name(), vocab_size,
size=[vocab_size, hidden_size], hidden_size,
dtype='float32', sparse=False,
is_sparse=False, weight_attr=paddle.ParamAttr(
param_attr=paddle.ParamAttr(
name='embedding_para', name='embedding_para',
initializer=paddle.nn.initializer.Uniform( initializer=paddle.nn.initializer.Uniform(
low=-init_scale, high=init_scale))) low=-init_scale, high=init_scale)))
...@@ -191,31 +187,28 @@ class PtbModel(paddle.fluid.Layer): ...@@ -191,31 +187,28 @@ class PtbModel(paddle.fluid.Layer):
def forward(self, input, label, init_hidden): def forward(self, input, label, init_hidden):
init_h = paddle.fluid.layers.reshape( init_h = paddle.reshape(
init_hidden, shape=[self.num_layers, -1, self.hidden_size]) init_hidden, shape=[self.num_layers, -1, self.hidden_size])
x_emb = self.embedding(input) x_emb = self.embedding(input)
x_emb = paddle.fluid.layers.reshape( x_emb = paddle.reshape(
x_emb, shape=[-1, self.num_steps, self.hidden_size]) x_emb, shape=[-1, self.num_steps, self.hidden_size])
if self.dropout is not None and self.dropout > 0.0: if self.dropout is not None and self.dropout > 0.0:
x_emb = paddle.fluid.layers.dropout( x_emb = paddle.nn.functional.dropout(
x_emb, x_emb, p=self.dropout, mode='upscale_in_train')
dropout_prob=self.dropout,
dropout_implementation='upscale_in_train')
rnn_out, last_hidden = self.simple_gru_rnn(x_emb, init_h) rnn_out, last_hidden = self.simple_gru_rnn(x_emb, init_h)
projection = paddle.matmul(x=rnn_out, y=self.softmax_weight) projection = paddle.matmul(x=rnn_out, y=self.softmax_weight)
projection = paddle.add(x=projection, y=self.softmax_bias) projection = paddle.add(x=projection, y=self.softmax_bias)
loss = paddle.nn.functional.softmax_with_cross_entropy( loss = paddle.nn.functional.softmax_with_cross_entropy(
logits=projection, label=label, soft_label=False) logits=projection, label=label, soft_label=False)
pre_2d = paddle.fluid.layers.reshape( pre_2d = paddle.reshape(projection, shape=[-1, self.vocab_size])
projection, shape=[-1, self.vocab_size]) label_2d = paddle.reshape(label, shape=[-1, 1])
label_2d = paddle.fluid.layers.reshape(label, shape=[-1, 1])
acc = paddle.metric.accuracy(input=pre_2d, label=label_2d, k=20) acc = paddle.metric.accuracy(input=pre_2d, label=label_2d, k=20)
loss = paddle.fluid.layers.reshape(loss, shape=[-1, self.num_steps]) loss = paddle.reshape(loss, shape=[-1, self.num_steps])
loss = paddle.reduce_mean(loss, dim=[0]) loss = paddle.mean(loss, axis=[0])
loss = paddle.reduce_sum(loss) loss = paddle.sum(loss)
return loss, last_hidden, acc return loss, last_hidden, acc
...@@ -251,7 +244,7 @@ def train_ptb_lm(): ...@@ -251,7 +244,7 @@ def train_ptb_lm():
print("model type not support") print("model type not support")
return return
paddle.disable_static(paddle.fluid.core.CUDAPlace(0)) paddle.disable_static(paddle.CUDAPlace(0))
if args.ce: if args.ce:
print("ce mode") print("ce mode")
seed = 33 seed = 33
...@@ -273,7 +266,7 @@ def train_ptb_lm(): ...@@ -273,7 +266,7 @@ def train_ptb_lm():
print(args.init_from_pretrain_model) print(args.init_from_pretrain_model)
raise Warning("The pretrained params do not exist.") raise Warning("The pretrained params do not exist.")
return return
paddle.fluid.load_dygraph(args.init_from_pretrain_model) paddle.load(args.init_from_pretrain_model)
print("finish initing model from pretrained params from %s" % print("finish initing model from pretrained params from %s" %
(args.init_from_pretrain_model)) (args.init_from_pretrain_model))
...@@ -305,8 +298,6 @@ def train_ptb_lm(): ...@@ -305,8 +298,6 @@ def train_ptb_lm():
sgd = paddle.optimizer.Adagrad( sgd = paddle.optimizer.Adagrad(
parameters=ptb_model.parameters(), parameters=ptb_model.parameters(),
learning_rate=base_learning_rate, learning_rate=base_learning_rate,
#learning_rate=paddle.fluid.layers.piecewise_decay(
# boundaries=bd, values=lr_arr),
grad_clip=grad_clip) grad_clip=grad_clip)
print("parameters:--------------------------------") print("parameters:--------------------------------")
...@@ -402,7 +393,7 @@ def train_ptb_lm(): ...@@ -402,7 +393,7 @@ def train_ptb_lm():
print("kpis\ttrain_ppl\t%0.3f" % ppl[0]) print("kpis\ttrain_ppl\t%0.3f" % ppl[0])
save_model_dir = os.path.join(args.save_model_dir, save_model_dir = os.path.join(args.save_model_dir,
str(epoch_id), 'params') str(epoch_id), 'params')
paddle.fluid.save_dygraph(ptb_model.state_dict(), save_model_dir) paddle.save(ptb_model.state_dict(), save_model_dir)
print("Saved model to: %s.\n" % save_model_dir) print("Saved model to: %s.\n" % save_model_dir)
eval(ptb_model, test_data) eval(ptb_model, test_data)
paddle.enable_static() paddle.enable_static()
......
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
import sys import sys
import paddle import paddle
import paddle.fluid as fluid
def check_cuda(use_cuda, err = \ def check_cuda(use_cuda, err = \
...@@ -27,7 +26,7 @@ def check_cuda(use_cuda, err = \ ...@@ -27,7 +26,7 @@ def check_cuda(use_cuda, err = \
cpu version. cpu version.
""" """
try: try:
if use_cuda == True and fluid.is_compiled_with_cuda() == False: if use_cuda == True and paddle.is_compiled_with_cuda() == False:
print(err) print(err)
sys.exit(1) sys.exit(1)
except Exception as e: except Exception as e:
...@@ -44,7 +43,7 @@ def check_version(): ...@@ -44,7 +43,7 @@ def check_version():
"Please make sure the version is good with your code." \ "Please make sure the version is good with your code." \
try: try:
fluid.require_version('1.6.0') paddle.utils.require_version('1.6.0')
except Exception as e: except Exception as e:
print(err) print(err)
sys.exit(1) sys.exit(1)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册