神经网络NN简单理解以及算法

简介

1.什么是神经网络

1.1 背景 :

  • 以人脑中的神经网络为启发,历史上出现过很多不同版本
  • 最著名的算法是1980年的 backpropagation

1.2 多层向前神经网络(Multilayer Feed-Forward Neural Network)

  • Backpropagation被使用在多层向前神经网络上
  • 多层向前神经网络由以下部分组成: 
    输入层(input layer), 隐藏层 (hidden layers), 输入层 (output layers)

    多层向前神经网络

    • 每层由单元Unit组成
    • 连接Unit之间有权重weights
    • 输入层用来输入数据
    • 隐藏层数量可以是任意的
    • 理论上有足够多的数据以及足够多的隐藏层,该网络可以模拟出任何方程
    • 需要进行非线性的转换
    • 以上构成2层的神经网络 输入层不作为一层

      2. 主要算法介绍

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Python和TensorFlow实现循环神经网络(RNN)的简单代码示例: ```python import tensorflow as tf # 定义超参数 learning_rate = 0.001 training_steps = 10000 batch_size = 128 display_step = 200 # 定义网络参数 num_input = 28 timesteps = 28 num_hidden = 128 num_classes = 10 # 定义输入张量 X = tf.placeholder("float", [None, timesteps, num_input]) Y = tf.placeholder("float", [None, num_classes]) # 定义权重和偏置变量 weights = { 'out': tf.Variable(tf.random_normal([num_hidden, num_classes])) } biases = { 'out': tf.Variable(tf.random_normal([num_classes])) } # 定义RNN模型 def RNN(x, weights, biases): # 定义单层LSTM神经网络模型 lstm_cell = tf.contrib.rnn.BasicLSTMCell(num_hidden, forget_bias=1.0) # 定义多层LSTM神经网络模型 # lstm_layers = [tf.contrib.rnn.BasicLSTMCell(num_hidden, forget_bias=1.0) for _ in range(num_layers)] # lstm_cell = tf.contrib.rnn.MultiRNNCell(lstm_layers) # 初始化状态 # state = lstm_cell.zero_state(batch_size, tf.float32) # 将输入张量转为时间序列格式 x = tf.unstack(x, timesteps, 1) # 定义循环神经网络模型 outputs, states = tf.contrib.rnn.static_rnn(lstm_cell, x, dtype=tf.float32) # 输出层 output = tf.matmul(outputs[-1], weights['out']) + biases['out'] return output # 构建模型 logits = RNN(X, weights, biases) prediction = tf.nn.softmax(logits) # 定义损失函数和优化器 loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=Y)) optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate) train_op = optimizer.minimize(loss_op) # 定义评估模型的准确率 correct_pred = tf.equal(tf.argmax(prediction, 1), tf.argmax(Y, 1)) accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32)) # 初始化变量 init = tf.global_variables_initializer() # 训练模型 with tf.Session() as sess: sess.run(init) for step in range(1, training_steps+1): batch_x, batch_y = mnist.train.next_batch(batch_size) # 将数据转为RNN模型需要的格式 batch_x = batch_x.reshape((batch_size, timesteps, num_input)) # 运行优化器和损失函数 sess.run(train_op, feed_dict={X: batch_x, Y: batch_y}) if step % display_step == 0 or step == 1: # 计算损失和准确率 loss, acc = sess.run([loss_op, accuracy], feed_dict={X: batch_x, Y: batch_y}) print("Step " + str(step) + ", Minibatch Loss= " + "{:.4f}".format(loss) + ", Training Accuracy= " + "{:.3f}".format(acc)) print("Optimization Finished!") # 计算测试集准确率 test_data = mnist.test.images[:128].reshape((-1, timesteps, num_input)) test_label = mnist.test.labels[:128] print("Testing Accuracy:", sess.run(accuracy, feed_dict={X: test_data, Y: test_label})) ``` 这个示例使用MNIST数据集进行训练和测试,使用了单层LSTM神经网络模型,训练过程中使用Adam优化器和交叉熵损失函数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值