本文源自白璽,创自白璽。转载请标注出处。本文参与掘金日新计划【博客搬家】
66 Ttensorflow库
TensorFlow是一个流行的机器学习库,可用于构建深度神经网络、卷积神经网络、递归神经网络等。以下是TensorFlow的一些基本代码和案例:
基本代码
安装TensorFlow
!pip install tensorflow
导入TensorFlow
import tensorflow as tf
创建常量张量
x = tf.constant(3)
y = tf.constant(4)
创建计算图
z = tf.add(x, y)
运行计算图
with tf.Session() as sess:
result = sess.run(z)
print(result)
神经网络案例
导入数据集
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("/tmp/data/", one_hot=True)
定义网络结构
# 定义输入层
x = tf.placeholder(tf.float32, [None, 784])
# 定义输出层
y = tf.placeholder(tf.float32, [None, 10])
# 定义权重和偏置项
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
# 定义输出结果
pred = tf.nn.softmax(tf.matmul(x, W) + b)
定义损失函数和优化器
# 定义交叉熵损失函数
cost = tf.reduce_mean(-tf.reduce_sum(y * tf.log(pred), reduction_indices=1))
# 定义优化器
optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.01).minimize(cost)
训练模型
# 定义训练参数
training_epochs = 25
batch_size = 100
display_step = 1
# 启动会话
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
# 循环训练模型
for epoch in range(training_epochs):
avg_cost = 0.
total_batch = int(mnist.train.num_examples/batch_size)
for i in range(total_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
_, c = sess.run([optimizer, cost], feed_dict={x: batch_xs, y: batch_ys})
avg_cost += c / total_batch
if (epoch+1) % display_step == 0:
print("Epoch:", '%04d' % (epoch+1), "cost=", "{:.9f}".format(avg_cost))
print("Optimization Finished!")
# 测试模型
correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))
print("Accuracy:", accuracy.eval({x: mnist.test.images, y: mnist.test.labels}))
这是一个基本的TensorFlow神经网络案例,用于识别MNIST手写数字数据集中的数字。它演示了如何使用TensorFlow创建神经网络、定义损失函数和优化器以及训练和测试模型。
TensorFlow代码
深度神经网络(DNN)分类
以下是一个使用TensorFlow构建深度神经网络(DNN)进行图像分类的示例代码:
import tensorflow as tf
from tensorflow import keras
# 加载数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 归一化像素值
x_train = x_train / 255.0
x_test = x_test / 255.0
# 定义模型
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=5)
# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)
卷积神经网络(CNN)分类
以下是一个使用TensorFlow构建卷积神经网络(CNN)进行图像分类的示例代码:
import tensorflow as tf
from tensorflow import keras
# 加载数据集
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 归一化像素值并添加通道维度
x_train = x_train.reshape(x_train.shape[0], 28, 28, 1) / 255.0
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1) / 255.0
# 定义模型
model = keras.Sequential([
keras.layers.Conv2D(32, (3,3), activation='relu', input_shape=(28,28,1)),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Conv2D(64, (3,3), activation='relu'),
keras.layers.MaxPooling2D((2,2)),
keras.layers.Flatten(),
keras.layers.Dense(64, activation='relu'),
keras.layers.Dense
TensorFlow是一个基于数据流编程(Data Flow Programming)的符号数学系统,广泛应用于深度学习和人工智能领域。下面是一些TensorFlow库的简介、示例代码和案例:
- TensorFlow Keras库:
Keras是一个高度模块化、易扩展的深度学习框架,TensorFlow Keras库为TensorFlow提供了一个高层次的API接口,可以更快速地进行深度学习模型的搭建和训练。
import tensorflow as tf
from tensorflow import keras
# 导入数据
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# 构建模型
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28, 28)),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10, activation='softmax')
])
# 编译模型
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=10)
# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)
- TensorFlow Datasets库:
TensorFlow Datasets库为TensorFlow提供了一些常用的数据集,并提供了一些数据预处理和数据增强的方法。
import tensorflow_datasets as tfds
# 加载数据集
train_data, test_data = tfds.load(name="mnist", split=["train", "test"])
# 对数据进行预处理和增强
def preprocess_data(data):
image = tf.cast(data["image"], tf.float32) / 255.0
label = data["label"]
return image, label
train_data = train_data.map(preprocess_data)
train_data = train_data.shuffle(buffer_size=1024)
train_data = train_data.batch(batch_size=32)
# 构建模型并训练
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28, 1)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_data, epochs=5)
# 对测试集进行评估
test_data = test_data.map(preprocess_data)
test_data = test_data.batch(batch_size=32)
test_loss, test_acc = model.evaluate(test_data)
print('Test accuracy:', test_acc)
- TensorFlow Probability库:
TensorFlow Probability库为TensorFlow提供了一些用于概率编程和贝叶斯推断的工具,可以用于解决许多实际问题。
import tensorflow_probability as tfp
import tensorflow as tf
# 构建贝叶斯线性回归模型
def model(x):
slope = tfp.distributions.Normal(loc=0, scale=1).sample()
bias = tfp.distributions.Normal(loc=0, scale=1).sample()
y = slope * x + bias
return y
# 构建损失函数
def negloglik(y_true, y_pred):
return -
| 库 | 描述 |
|---|---|
| tensorflow | TensorFlow的主要库,包括神经网络和机器学习算法的实现 |
| tensorflow.keras | 基于Keras的高级API,用于构建深度学习模型 |
| tensorflow.data | 用于读取和处理大型数据集的API |
| tensorflow.image | 用于图像处理的API |
| tensorflow.text | 用于自然语言处理的API |
| tensorflow.js | 用于在浏览器中运行TensorFlow模型的JavaScript库 |
| tensorflow-serving | 用于将训练好的模型部署到生产环境中的库 |
| tensorflow-addons | TensorFlow的附加组件,包括各种实用工具和扩展模块 |