神经网络入门一:实现一个单输入神经元(适合小白)

1  本人所使用的开发环境为 ubantu 18.04  64位系统,主要使用的软件如下:

  • Python 3.6
  • anaconda3 1.9.7
  • spyder 3.34
  • tensorflow  1.13.1

2 实验过程

  • 一个输入值,作为神经元的激励。
  •  单个权重,用来与输入相乘,产生神经元的输出;权重值会在训练阶段产生变化。
  •  输出是输入和权重的乘积。神经元是通过输出和期望值的比较进行学习的。

该神经元的输出就是输入与对应权重的乘积。

神经网络入门一:实现一个单输入神经元(适合小白)_第1张图片

                                                                              图2.1  单个神经元输出示意图

代码实现:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 24 21:25:28 2019
@author: leonorand
"""
import tensorflow as tf
#我们定义 input_value ,赋值为浮点数 0.5
input_value = tf.constant(0.5,name="input_value")
#权重是传递给单神经元的输入,在网络的训练阶段会改变,所以需要用TensorFlow的变量型来定义权重:
weight = tf.Variable(1.0,name="weight")
#期望值指的是完成网络的学习后,我们期望得到的输出值。在此定义为一个TensorFlow常量
expected_output = tf.constant(0.0,name="extected_output")
#计算的模型
model = tf.multiply(input_value,weight,"model")
#损失函数。一般会将其定义为模型输出与期望输出差的平方
loss_function = tf.pow(expected_output-model,2,name="loss_function")
#梯度下降法
optimizer = tf.train.GradientDescentOptimizer(0.025).minimize(loss_function)
for value in [input_value,weight,expected_output,model,loss_function]:
    tf.summary.scalar(value.op.name,value)
summaries = tf.summary.merge_all()

#现在创建 SummaryWriter ,将 filelog_simple_stats 事件写入对应的汇总记录
sess = tf.Session()
summary_writer = tf.summary.FileWriter('log_simple_stats',sess.graph)
sess.run(tf.global_variables_initializer())
#我们进行了100次模拟,每次模拟都会监控 summary_writer 中定义的参数
for i in range(100):
    summary_writer.add_summary(sess.run(summaries),i)
    sess.run(optimizer) 

3 实验结果

在创建 log_simple_stats 的同一路径下,如果代码运行正常,终端将显示以下输出:
startig tensorboard on port 6006
打开浏览器并输入地址 localhost:6006 ,即可开始使用TensorBoard。

实验结果如图3.1所示

神经网络入门一:实现一个单输入神经元(适合小白)_第2张图片

                                                                                                    3.1TensorBoard页面

4 实验中遇到的坑

由于tensorflow版本问题,做了如下改变


Tensorflow-常见报错解决方案
1. AttributeError: 'module' object has no attribute 'SummaryWriter'
tf.train.SummaryWriter 改为:tf.summary.FileWriter

2. AttributeError: 'module' object has no attribute 'summaries'
tf.merge_all_summaries() 改为:summary_op = tf.summary.merge_all() 

3. AttributeError: 'module' object has no attribute 'histogram_summary'
tf.histogram_summary() 改为:tf.summary.histogram()
tf.scalar_summary() 改为:tf.summary.scalar() 
tf.image_summary() 改为:tf.summary.image() 

4. AttributeError: 'module' object has no attribute 'scalar_summary' 
tf.scalar_summary('images', images) 改为:tf.summary.scalar('images', images)
tf.image_summary('images', images) 改为:tf.summary.image('images', images) 

5. ValueError: Only call `softmax_cross_entropy_with_logits` with named arguments (labels=..., logits=..., ...)
cifar10.loss(labels, logits)
改为:cifar10.loss(logits=logits, labels=labels)

6.cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits, dense_labels, name='cross_entropy_per_example')
改为:cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=dense_labels, name='cross_entropy_per_example') 

7. TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined.
if grad: 改为  if grad is not None: 

8. ValueError: Shapes (2, 128, 1) and () are incompatible.
concated = tf.concat(1, [indices, sparse_labels]) 改为:concated = tf.concat([indices, sparse_labels], 1)

5 参考链接

https://www.cnblogs.com/wangqiang9/p/9268620.html

你可能感兴趣的:(神经网络,神经网络入门)