tensorflow中sentiment_analysis_cell

import os
os.environ['TF_CPP_MIN_LOG_LEVEL']='2'
import tensorflow as tf
import numpy as np
from tensorflow import keras
from tensorflow.keras import layers

tf.random.set_seed(22)
np.random.seed(22)
assert tf.__version__.startswith('2.')

batchsz =128

#the most frequest words
total_words=10000
max_review_len=80
embeding_len= 100
(x_train,y_train),(x_test,y_test) = keras.datasets.imdb.load_data(num_words=total_words)
#x_train:[b,80]
#x_test:[b,80]
x_train = keras.preprocessing.sequence.pad_sequences(x_train,maxlen=max_review_len)
x_test=keras.preprocessing.sequence.pad_sequences(x_test,maxlen=max_review_len)

db_train = tf.data.Dataset.from_tensor_slices((x_train,y_train))
db_train=db_train.shuffle(1000).batch(batchsz,drop_remainder=True)
db_test = tf.data.Dataset.from_tensor_slices((x_train,y_train))
db_test=db_test.batch(batchsz,drop_remainder=True)
print('x_train shapeL:',x_train.shape,tf.reduce_max(y_train),tf.reduce_min(y_train))
print('x_test shape',x_test.shape)


class MyRNN(keras.Model):

    def __init__(self,units):
        super(MyRNN,self).__init__()
        # [b, 64]
        self.state0 = [tf.zeros([batchsz, units])]
        self.state1 = [tf.zeros([batchsz, units])]


        #transform text to embedding representation
        #[b,80]=>[b,80,100]
        self.embedding = layers.Embedding(total_words,embeding_len,
                                          input_length=max_review_len)

        #[b,80,100],h_dim:64
        #RNN:cell1,cell2,cell3
        #SimpleRNN
        self.rnn_cell0 = layers.SimpleRNNCell(units, dropout=0.5)
        self.rnn_cell1 = layers.SimpleRNNCell(units, dropout=0.5)

        #fc,[b,80,100]=>[b,64]=>[b,1]
        self.outlayer= layers.Dense(1)

    def call(self,inputs,training=None):
        """
        net(x) net(x,training=True):train mode
        net(x,training=False):test
        :param inputs: [b,80]
        :param training:
        :return:
        """
        #[b,80]
        x = inputs
        #embedding: [b,80]=>[b,80,100]
        x = self.embedding(x)
        #rnn cell compute
        #[b,80,100]=>[b,64]
        state0 = self.state0
        state1=self.state1
        for word in tf.unstack(x , axis=1):#word:[b,100]
            #h1 = x*wxh+h0*whh
            #out0:[b,64]
            out0 , state0 = self.rnn_cell0(word,state0,training)
            #out1:[b,64]
            out1, state1=self.rnn_cell1(out0,state1)


        #out:[b,64]=>[b,1]
        x = self.outlayer(out1)
        #p(y is pos|x)
        prob = tf.sigmoid(x)

        return prob
def main():
    units = 64
    epochs = 4

    model = MyRNN(units)
    model.compile(optimizer = keras.optimizers.Adam(0.001),
                  loss = tf.losses.BinaryCrossentropy(),
                  metrics=['accuracy'],experimental_run_tf_function=False)
    model.fit(db_train, epochs=epochs, validation_data=db_test)

    model.evaluate(db_test)


if __name__ == '__main__':
    main()



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
beicunnan\sentiment_analysis_imdb是指在IMDb(互联网电影数据库)上进行情感分析的项目。 IMDB是一个全球知名的电影评分和评论平台,用户可以在该网站上给自己观看的电影进行评分和发表评论。beicunnan\sentiment_analysis_imdb项目正是利用这个平台上的用户评论数据,使用情感分析的技术来判断评论的情感倾向。 情感分析是一种文本分析技术,旨在确定一段文本蕴含的主观情感,例如正面、负面或性。在IMDb评论,用户可能会表达对电影的赞扬、批评或描述感受的情感。通过应用情感分析算法,beicunnan\sentiment_analysis_imdb项目可以自动判断评论的情感倾向。 这个项目的实现主要包括以下步骤:首先,收集IMDb上的用户评论数据;然后,对评论文本进行预处理,如清理无用信息、分词和去除停用词;接下来,使用机器学习深度学习算法训练情感分析模型,让模型能够理解并区分类别评论的情感;最后,通过应用训练好的模型,对新的评论进行情感分析并输出情感倾向结果。 beicunnan\sentiment_analysis_imdb项目的应用范围很广泛。电影制片商可以利用该项目来了解观众对他们电影的评价,从而了解自己电影的市场反响。此外,社交媒体分析、舆情监测等领域也可以利用情感分析来了解公众对于特定话题的态度和情感倾向,帮助做出更合理的决策等。 总之,beicunnan\sentiment_analysis_imdb项目是利用IMDb上的用户评论数据,通过情感分析算法自动判断评论情感倾向的项目,具有广泛的应用前景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值