深度学习——如何去除警告

                                        深度学习——如何去除警告

 

        警告本质包版本兼容性问题,版本不断地在更新,又要做到向下兼容,所以对于版本不同导致的差异性写法(函数、参数等等)都会给出提醒

       个人建议非强迫症的朋友,还是不要添加去除警告的代码,便于以后排查问题。当然,如果是本地离线项目代码,注释掉去除警告的代码就OK;但是,相信部分强迫者很难容忍一大堆警告的出现,尤其是深度学习框架:Tensorflow与Keras。下面分别提供两者的去除警告方法。

  • Tensorflow去除警告
  • Keras去除警告【导入keras会报和tensorflow同样的错误,因为keras是以tensorflow为后端的框架

在文件开头添加注释代码:

import os
import tensor flow as tf

os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

        可能部分朋友的代码使用了上面的注释还是会存在警告,那是因为各种版本太高导致的哈(比如numpy,主要还是习惯了pip install numpy安装方式,这样装的是最新版本,一般都会提醒你各种警告,除非代码用的是最新版的格式写的。这时候一般两种解决方案:A. 指定版本重新安装,说白了,就是降低一下numpy的版本,与现在的代码格式要求保持一致;B. 修改当前代码,肯定有函数或参数没有按照最新版本的格式要求写),这个可以百度解决,问题不大。实在找不到,欢迎留言讨论。例子:https://www.jianshu.com/p/945290726335

       

       为了测试,基于LSTM的keras版本,给大家一个例子吧。可以直接运行。

#!/usr/bin/env python
# -*- coding:utf-8 -*-

"""
@Time     :2019/8/10
@Name     :GeekZW
@Contact  :1223242863@qq.com
@File     :lstm_keras.py
@Software :Pycharm
"""

from __future__ import print_function

import os
from keras.models import Sequential
from keras.layers import Dense, Activation, Embedding
from keras.layers import LSTM, GRU
import tensorflow as tf
import numpy as np

np.random.seed(1337)

os.environ["TF_CPP_MIN_LOG_LEVEL"] = "3"
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)


class LSTMModel(object):
    def __init__(self,
                 max_features,
                 embedding_dims,
                 max_len,
                 labels):
        self.max_features = max_features
        self.embedding_dims = embedding_dims
        self.max_len = max_len
        self.labels = labels

    def get_model(self):
        model = Sequential()

        # 嵌入层,每个词维度为128
        model.add(Embedding(self.max_features, self.embedding_dims, input_length=self.max_len))

        # LSTM层,输出维度128,可以尝试着换成 GRU 试试
        model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))  # LSTM 与 GRU
        model.add(Dense(len(self.labels)))   # 单神经元全连接层
        model.add(Activation("softmax"))     # sigmoid 激活函数层

        # 定义损失函数、优化器、分类度量指标
        model.compile(loss="binary_crossentropy",
                      optimizer="adam",
                      metrics=["accuracy"])
        return model


if __name__ == "__main__":
    lstm_model = LSTMModel(
        max_features=20000,
        embedding_dims=200,
        max_len=25,
        labels=["A", "B", "C"]
    )
    model = lstm_model.get_model()
    model.summary()
    print("输入节点名:", model.inputs)
    print("输出节点名:", model.outputs)

运行结果:

 

假如说,不添加去除警告的2行代码(注释掉23,24行),是个什么效果呢?

运行结果

这么多警告,也难怪想去掉,看着脑壳都大,哈哈。

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页