Tensorflow小结

本文介绍了使用Tensorflow构建计算图的步骤,包括定义输入输出占位符、权重、推断模型、损失函数和优化器。执行计算图时,涉及模型参数初始化、数据打乱、前向传播、损失计算及反向传播更新。InteractiveSession提供了更灵活的代码构建方式,适合交互式环境如IPython使用。
部署运行你感兴趣的模型镜像

Tensorflow通常构建步骤:

构建计算图:

1.    定义输入和输出的占位符

2.    定义模型中需要用到的权重

3.    定义推断模型,构建网络

4.    定义损失函数作为优化对象

5.    定义优化器进行优化

执行计算图:

1.    第一次进行运算的时候,初始化模型的所有参数

2.    传入训练数据,可以打乱顺序

3.    网络前向传播,计算出当前参数下的网络输出

4.    根据网络输出和目标计算出loss

5.    通过loss反向传播更新网络中的参数

InteractiveSession:

Tensorflow依赖于一个高效的C++后端来进行计算。与后端的这个连接叫做session。一般而言,使用TensorFlow程序的流程是先创建一个图,然后在session中启动它。

这里,我们使用更加方便的InteractiveSession类。通过它,你可以更加灵活地构建你的代码。它能让你在运行图的时候,插入一些计算图,这些计算图是由某些操作(operations)构成的。这对于工作在交互式环境中的人们来说非常便利,比如使用IPython。如果你没有使用InteractiveSession,那么你需要在启动session之前构建整个计算图,然后启动该计算图

您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

构建RNN网络完成ChnSentiCorp数据集情感分析,主要涉及数据准备、模型构建、训练与评估等关键步骤。 在数据准备阶段,使用ChnSentiCorp数据集,该数据集是中文情感分类标准数据集,包含用户评论和情感标签(正面为1,负面为0),并分为train、dev和test三个部分[^1]。对数据进行预处理时,使用jieba进行中文分词,将文本转换为适合模型处理的格式。通过Tokenizer创建词汇表,将文本转换为序列,并使用pad_sequences填充序列至相同长度,以保证输入数据的一致性。 模型构建方面,采用Sequential模型,包含嵌入层、RNN层、全连接层和输出层。嵌入层将单词索引映射为密集向量,RNN层处理序列信息,全连接层进行特征提取和转换,输出层使用sigmoid激活函数进行二元分类。编译模型时,使用adam优化器和binary_crossentropy损失函数,并以准确率作为评估指标。 训练过程中,使用fit方法对模型进行训练,并通过validation_data参数监控验证集的性能。训练完成后,使用evaluate方法评估模型在测试集上的准确率。 以下是关键代码示例: ```python # 数据预处理 import pandas as pd import jieba from tensorflow.keras.preprocessing.text import Tokenizer from tensorflow.keras.preprocessing.sequence import pad_sequences train_df = pd.read_csv('ChnSentiCorp/train.csv') dev_df = pd.read_csv('ChnSentiCorp/dev.csv') test_df = pd.read_csv('ChnSentiCorp/test.csv') def chinese_tokenize(text): return ' '.join(jieba.cut(text)) train_df['text'] = train_df['text'].apply(chinese_tokenize) dev_df['text'] = dev_df['text'].apply(chinese_tokenize) test_df['text'] = test_df['text'].apply(chinese_tokenize) tokenizer = Tokenizer(num_words=5000) tokenizer.fit_on_texts(train_df['text']) train_sequences = tokenizer.texts_to_sequences(train_df['text']) dev_sequences = tokenizer.texts_to_sequences(dev_df['text']) test_sequences = tokenizer.texts_to_sequences(test_df['text']) max_len = 200 X_train = pad_sequences(train_sequences, maxlen=max_len) X_dev = pad_sequences(dev_sequences, maxlen=max_len) X_test = pad_sequences(test_sequences, maxlen=max_len) y_train = train_df['label'].values y_dev = dev_df['label'].values y_test = test_df['label'].values # 模型构建 from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Embedding, SimpleRNN, Dense, Dropout vocab_size = len(tokenizer.word_index) + 1 model = Sequential() model.add(Embedding(input_dim=vocab_size, output_dim=128, input_length=max_len)) model.add(SimpleRNN(128, return_sequences=False)) model.add(Dense(64, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) model.summary() # 模型训练与评估 history = model.fit(X_train, y_train, epochs=15, batch_size=64, validation_data=(X_dev, y_dev)) test_loss, test_acc = model.evaluate(X_test, y_test) print(f'测试集准确率: {test_acc:.4f}') ``` 不过,该模型也存在一些可改进之处。例如,使用SimpleRNN可能在处理长序列时存在梯度消失问题,可考虑使用LSTM或GRU等改进的RNN结构。同时,还可以尝试使用预训练词向量、调整超参数等方法来提升模型性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值