二分类RNN神经网络python代码
时间: 2023-08-30 19:09:44 浏览: 84
下面是一个二分类的 RNN 神经网络的 Python 代码示例:
```python
import numpy as np
import tensorflow as tf
# 设置随机种子
tf.set_random_seed(1234)
# 加载数据
x_train = np.array([[1, 0, 1, 0], [0, 1, 0, 1], [1, 1, 0, 0], [0, 0, 1, 1]])
y_train = np.array([1, 1, 0, 0])
# 定义模型
n_inputs = 4 # 输入大小
n_neurons = 10 # 神经元数量
n_outputs = 1 # 输出大小
# 占位符
X = tf.placeholder(tf.float32, [None, n_inputs])
y = tf.placeholder(tf.float32, [None, n_outputs])
# 权重和偏置项矩阵
W = tf.Variable(tf.random_normal([n_neurons, n_outputs]))
b = tf.Variable(tf.zeros([n_outputs]))
# RNN 层
cell = tf.nn.rnn_cell.BasicRNNCell(num_units=n_neurons, activation=tf.nn.relu)
outputs, states = tf.nn.dynamic_rnn(cell, X, dtype=tf.float32)
# 输出层
logits = tf.matmul(outputs[:, -1], W) + b
y_pred = tf.nn.sigmoid(logits)
# 定义代价函数和优化器
cost = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=logits, labels=y))
optimizer = tf.train.AdamOptimizer(learning_rate=0.01).minimize(cost)
# 训练模型
n_epochs = 1000
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
for epoch in range(n_epochs):
_, c = sess.run([optimizer, cost], feed_dict={X: x_train, y: y_train.reshape(-1, 1)})
if epoch % 100 == 0:
print("Epoch:", epoch, "Cost:", c)
# 预测结果
y_pred_train = sess.run(y_pred, feed_dict={X: x_train})
print("Training Accuracy:", np.mean(y_pred_train.reshape(-1) > 0.5))
```
在这个示例中,我们使用了一个 BasicRNNCell 作为 RNN 层,并且使用了 sigmoid 作为激活函数。我们也使用了交叉熵作为代价函数,并使用 Adam 优化器进行模型优化。在训练模型之后,我们使用训练数据进行预测,并计算了训练准确率。
阅读全文