1 本人所使用的开发环境为 ubantu 18.04 64位系统,主要使用的软件如下:
2 实验过程
该神经元的输出就是输入与对应权重的乘积。
图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所示
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