zoukankan      html  css  js  c++  java
  • 深度学习-Tensorflow2.2-一维卷积网络{12}-一维卷积实例-27

    一维卷积

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    航空公司评论数据集

    import tensorflow as tf
    import matplotlib.pyplot as plt
    %matplotlib inline
    import numpy as np
    import pandas as pd
    import os
    import re
    
    # 显存自适应分配
    gpus = tf.config.experimental.list_physical_devices(device_type='GPU')
    for gpu in gpus:
        tf.config.experimental.set_memory_growth(gpu,True)
    
    gpu_ok = tf.test.is_gpu_available()
    print("tf version:", tf.__version__)
    print("use GPU", gpu_ok) # 判断是否使用gpu进行训练
    
    # 读取数据
    data = pd.read_csv ("F:/py/ziliao/数据集/Tweets.csv")
    data.head()
    

    在这里插入图片描述

    data = data[["airline_sentiment","text"]]
    

    在这里插入图片描述

    data.airline_sentiment.value_counts()# 查看各评论的条数
    

    在这里插入图片描述

    data_p = data[data.airline_sentiment=="positive"]
    data_n = data[data.airline_sentiment=="negative"]
    
    data_n = data_n.iloc[:len(data_p)] # 我们从差评里取出好评这么多数据让数据一致
    

    在这里插入图片描述
    数据预处理

    # 创建新的数据
    data = pd.concat([data_n,data_p])
    len(data)
    
    data = data.sample(len(data))# 乱序
    data
    

    在这里插入图片描述

    # 处理label
    # 返回布尔值,把布尔值astype成int类型  赋值给review列
    data["review"] = (data.airline_sentiment=="positive").astype("int")
    

    在这里插入图片描述

    del data["airline_sentiment"] #删除该列
    

    在这里插入图片描述
    处理文本

    token = re.compile("[A-Za-z]+|[!?,.()]")# 编写一个正则取出A-Z a-z !?,.()
    
    def reg_text(text):
        new_text = token.findall(text) # 提取字符
        new_text = [word.lower()for word in new_text] # 变成小写
        return new_text
    
    data["text"] = data.text.apply(reg_text) # 字符处理后重新赋值给text
    

    在这里插入图片描述

    # 提取出文本中的唯一单词
    word_set = set()
    for text in data.text:
        for word in text:
            word_set.add(word)
    

    在这里插入图片描述

    len(word_set)# 查看单词数
    
    max_word = len(word_set)+1
    max_word
    
    # 构造一个 英文单词:索引
    word_list = list(word_set) # 转换成列表
    
    word_list.index("customersfirst")
    

    在这里插入图片描述

    # 转换成 英文单词:数字索引 把所有数字+1 表示不从0开始数数
    word_index = dict((word,word_list.index(word)+1) for word in word_list)
    
    word_index
    

    在这里插入图片描述

    # 对数据集进行转换  如果未匹配到 0作为填充
    data_ok = data.text.apply(lambda x:[word_index.get(word,0)for word in x])
    

    在这里插入图片描述

    max(len(x)for x in data_ok),min(len(x)for x in data_ok) # 查看评论长度
    
    maxlen = max(len(x)for x in data_ok)
    
    # 对所有评论安装最大长度进行填充 填充为0
    data_ok = tf.keras.preprocessing.sequence.pad_sequences(data_ok.values,
                                                            maxlen=maxlen)
    

    在这里插入图片描述

    data_ok.shape #  数据
    

    在这里插入图片描述

    label = data.review.values # label
    label
    

    在这里插入图片描述
    建立模型

    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Embedding(max_word, 50, input_length=maxlen))
    model.add(tf.keras.layers.Conv1D(32, 7, activation='relu', padding='same'))
    model.add(tf.keras.layers.MaxPooling1D(3))
    model.add(tf.keras.layers.Conv1D(32, 7, activation='relu', padding='same'))
    model.add(tf.keras.layers.GlobalAveragePooling1D())
    model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
    

    在这里插入图片描述

    # 编译模型
    model.compile(optimizer=tf.keras.optimizers.RMSprop(),
                  loss='binary_crossentropy',
                  metrics=['acc']
    )
    
    # 训练
    history = model.fit(data_ok,label, # 训练数据及label
                        epochs=10, # 训练步数
                        batch_size=50, # 每次训练50个数据
                        validation_split=0.2    # 从训练集中分割出20%作为测试集
    )
    

    在这里插入图片描述

  • 相关阅读:
    电子书《数字化转型领导者的技术修养》免费下载
    数字签名
    C:条件编译
    轻量级日志收集方案Loki
    安装Kubernetes(k8s)保姆级教程---无坑版
    设计模式七大原则-迪米特法则
    设计模式七大原则-开闭原则
    设计模式七大原则-里氏替换原则
    deepin-terminal改造风云再起
    deepin-terminal再改造
  • 原文地址:https://www.cnblogs.com/gemoumou/p/14186254.html
Copyright © 2011-2022 走看看