TensorFlow、Keras与循环神经网络的应用与实践
立即解锁
发布时间: 2025-08-29 10:08:23 阅读量: 7 订阅数: 6 

# TensorFlow、Keras与循环神经网络的应用与实践
## 1. TensorFlow与Keras基础
### 1.1 简单绘图与结果展示
在使用TensorFlow和Keras进行机器学习任务时,常常需要对训练过程和结果进行可视化。以下代码展示了如何绘制训练损失曲线,并输出训练后的权重和偏置,同时绘制最佳拟合线:
```python
plt.xlabel('Epochs')
plt.ylabel("Cost")
plt.plot(history.history["loss"])
plt.show()
# Display the results.
weights = layer0.get_weights()
weight = weights[0][0]
bias = weights[1]
print('weight: {} bias: {}'.format(weight, bias))
y_learned = x_train * weight + bias
plt.rcParams["font.size"] = "18"
plt.scatter(x_train, y_train, marker = "+" , label = "Training Data")
plt.plot(x_train,y_learned,color="red",label="Line of Best Fit")
plt.legend()
plt.xlabel("x")
plt.ylabel("y")
plt.show()
```
### 1.2 XOR逻辑门的神经网络训练
XOR逻辑门问题是一个经典的非线性可分问题,需要使用多层神经网络来解决。以下是使用TensorFlow和Keras训练XOR逻辑门神经网络的具体步骤:
1. **导入必要的库**:
```python
import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow import keras
```
2. **设置训练数据和目标数据**:
```python
training_data = np.array([[0,0] , [0,1] , [1,0] , [1, 1]] , "float32")
target_data = np.array([[0] , [1] , [1] , [0]] , "float32")
```
3. **构建神经网络模型**:
```python
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.Dense(8 , activation = "relu"))
model.add(tf.keras.layers.Dense(8 , activation = "relu"))
model.add(tf.keras.layers.Dense(1 , activation = "sigmoid"))
```
4. **编译模型**:
```python
model.compile(loss="mean_squared_error", optimizer=tf.keras.optimizers.Adam(0.1), metrics=["accuracy"])
```
5. **训练模型**:
```python
hist = model.fit(training_data,target_data,epochs=500,verbose=1)
```
6. **输出预测结果和评估指标**:
```python
print(model.predict(training_data).round())
val_loss, val_acc = model.evaluate(training_data, target_data)
print(val_loss, val_acc)
```
7. **绘制损失和准确率曲线**:
```python
loss_curve = hist.history["loss"]
acc_curve = hist.history["accuracy"]
plt.plot(loss_curve , label="Loss")
plt.plot(acc_curve , label="Accuracy")
plt.xlabel("Epochs")
plt.legend()
plt.show()
```
8. **输出各层的配置和权重**:
```python
for layer in model.layers:
print(layer.get_config(), layer.get_weights())
```
### 1.3 波士顿住房数据的神经网络训练
波士顿住房数据是一个经典的回归问题,使用TensorFlow和Keras可以构建不同结构的神经网络来进行预测。以下是四个不同模型的构建和训练过程:
1. **导入必要的库和数据**:
```python
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
from keras.datasets import boston_housing
(x_train, y_train), (x_test, y_test)=boston_housing.load_data(path= "boston_housing.npz",test_split=0,seed=113)
```
2. **模型1:单神经元模型**:
```python
model = keras.Sequential([keras.layers.Dense(1, input_dim=13, kernel_initializer="normal"),])
```
3. **编译和训练模型**:
```python
model.compile(loss="mean_squared_error", optimizer=tf.keras.optimizers.Adam(0.01))
hist=model.fit(x_train, y_train, epochs=1000, validation_split=0.2, verbose=0)
```
4. **绘制损失曲线**:
```python
epochs = 1000
plt.rcParams["font.size"] = "18"
plt.plot(range(epochs), hist.history["loss"], range(epochs), hist.history["val_loss"])
plt.xlabel("Number of Epochs")
plt.ylabel("Loss")
plt.show()
```
### 1.4 Keras API特性
Keras是一个为人类设计的API,具有简单易用、灵活且强大的特点。以下是Keras API的一些主要特性:
| 类别 | 具体特性 |
| --- | --- |
| Models API | Model Class、Sequential class、Model training APIs、Model saving, serialization |
| Losses | Hinge、Probabilistic、Regression、Classification T/F等 |
| Data Loading | Image data、Timeseries data、Textdata等 |
| Layers API | Base layer class、Layer activations、Layer weight initializers等 |
| Callbacks API | Model checkpoint、TensorBoard、Early stopping等 |
| Utilities | Model plotting、Serialization、Backend等 |
## 2. 循环神经网络(RNN)
### 2.1 循环神经网络概述
循环神经网络(RNN)是一种特殊的人工神经网络,它可以利用先前输入的信息来影响当前的输入和输出。RNN具有内部记忆,通过循环反馈的方式工作,常用于时间序列预测、音乐创作、机器翻译和自然语言处理等领域,如苹果的Siri、谷歌的语音搜索和谷歌翻译都使用了RNN技术。
### 2.2 离散Hopf
0
0
复制全文
相关推荐










