tensorflow--建立一个简单的小网络
import tensorflow as tf
import numpy as np
# #简单的数据形网络
# #定义输入参数
# X=tf.constant(value=[[0.7,0.5]])
# W1=tf.Variable(tf.truncated_normal(shape=[2,3],mean=0,stddev=2))
# W2=tf.Variable(tf.truncated_normal(shape=[3,1],mean=0,stddev=2))
# #定义前向传播过程
# a=tf.matmul(X,W1)
# y=tf.matmul(a,W2)
# #变量初始化
# init=tf.global_variables_initializer()
# with tf.Session() as sess:
# sess.run(init)
# print("Y",sess.run(y))
#multiply是对应元素相乘,matul是矩阵相乘
# 定义网络变量
#s输入常亮
x_input=tf.placeholder(dtype=tf.float32,shape=[1,2],name="x_input")
#权重变量
W1=tf.Variable(tf.random_normal(shape=[2,3],mean=0,stddev=2))
W2=tf.Variable(tf.random_normal(shape=[3,1],mean=0,stddev=2))
#定义网络运算图
a=tf.matmul(x_input,W1)
Y=tf.matmul(a,W2)
#初始化全局变量
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
result=sess.run(Y,feed_dict={x_input:[[0.7,0.5]]})
print("result", result)
result [[-4.5023837]] #在pycharm运行程序
import tensorflow as tf
import numpy as np BATCH_SIZE = 8 # 一次输入网络的数据,称为batch。一次不能喂太多数据
SEED = 23455 # 产生统一的随机数 rdm = np.random.RandomState(SEED)
X = rdm.rand(32, 2) i=0
Y=np.zeros((32,), dtype=np.int)
Y_=np.transpose([Y])
for (x0, x1) in X:
y=int(x0 + x1 < 1)
Y_[[i]]=y
i=i+1 print("X:\n", X)
print("Y_:\n",Y_) # 1定义神经网络的输入、参数和输出,定义前向传播过程。
x = tf.placeholder(tf.float32, shape=(None, 2))
y_ = tf.placeholder(tf.float32, shape=(None, 1)) w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed=1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed=1)) a = tf.matmul(x, w1)
y = tf.matmul(a, w2) # 2定义损失函数及反向传播方法。
loss = tf.reduce_mean(tf.square(y - y_))
train_step = tf.train.GradientDescentOptimizer(0.001).minimize(loss) # 三种优化方法选择一个就可以 with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
# 输出目前(未经训练)的参数取值。
print("w1:\n", sess.run(w1))
print("w2:\n", sess.run(w2))
print("\n")
STEPS = 3000
for i in range(STEPS): #0-2999
start = (i * BATCH_SIZE) % 32
end = start + BATCH_SIZE
sess.run(train_step, feed_dict={x: X[start:end], y_: Y_[start:end]})
if i % 500 == 0:
total_loss = sess.run(loss, feed_dict={x: X, y_: Y_})
print("After %d training step(s), loss on all data is %g"%(i,total_loss))
print("\n")
print("w1:\n", sess.run(w1))
print("w2:\n", sess.run(w2)) #比较完整的一个网络
import tensorflow as tf
import numpy as np
batch_size=8
seed=23455
#制造一些假数据
rng=np.random.RandomState(seed)
X=rng.rand(32,2)
print(X)
Y=np.zeros(shape=(32,1),dtype=np.int)
Y=[[np.int(x0+x1<1)]for (x0,x1) in X]
print(Y)
#定义网络
x_input=tf.placeholder(shape=[None,2],dtype=np.float,name="input")
y_output=tf.placeholder(shape=[None,1],dtype=np.float,name="output")
#定义变量
W1=tf.Variable(tf.random_normal(shape=[2,3],stddev=1,seed=1))
W2=tf.Variable(tf.random_normal(shape=[3,1],stddev=1,seed=1))
#定义静态网络函数
a=tf.matmul(x_input,W1)
y=tf.matmul(a,W2)
#定义损失函数
loss=tf.reduce_mean(tf.square(y-y_output))
train_step=tf.train.GradientDescentOptimizer(0.001).minimize(loss)
#初始化变量
init=tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
print("W1:\n",W1)
#开始批量载入数据
for i in range(2000):
data_start=(i*batch_size)%32
data_end=data_start+batch_size
#开始训练数据
sess.run(train_step,feed_dict={x_input:X[data_start:data_end],y_output:Y[data_start:data_end]})
#每隔一段就打印出损失值
if ((i)%500==0):
Loss=sess.run(loss,feed_dict={x_input:X,y_output:Y})
print("loss",Loss)
print("w1",sess.run(W1))
print("W2",sess.run(W2))
tensorflow--建立一个简单的小网络的更多相关文章
- Hyperledger Fabric 建立一个简单网络
Building you first network 网络结构: 2个Orgnizations(每个Org包含2个peer节点)+1个solo ordering service 打开fabric-sa ...
- 3.2 Lucene实战:一个简单的小程序
在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...
- 输出多行字符的一个简单JAVA小程序
public class JAVA { public static void main(String[] args) { System.out.println("-------------- ...
- python -----一个简单的小程序(监控电脑内存,cpu,硬盘)
一个简单的小程序 用函数实现!~~ 实现: cpu 使用率大于百分之50 时 , C 盘容量不足5 G 时, 内存 低于2G 时. 出现以上其中一种情况,发送自动报警邮件! 主要运用 到了两个 模 ...
- idea破解版安装、配置jdk以及建立一个简单的maven工程
idea破解版安装.配置jdk,配置jdk环境变量以及建立一个简单的maven工程 一.idea破解版以及配置文件下载 下载网址:https://pan.baidu.com/s/1yojA51X1RU ...
- 通过myclipse建立一个简单的Hibernate项目(PS:在单元测试中实现数据的向表的插入)
Hibernate的主要功能及用法: Ⅰ.Hibernate封装了JDBC,使Java程序员能够以面向对象的思想对数据库进行操作 Ⅱ.Hibernate可以应用于EJB的J2EE架构,完成数据的持久化 ...
- Python3的tkinter写一个简单的小程序
一.这个学期开始学习python,但是看了python2和python3,最后还是选择了python3 本着熟悉python的原因,并且也想做一些小程序来增加自己对python的熟练度.所以写了一个简 ...
- 利用NET HUNTER建立一个自动文件下载的网络接入点
免责声明:本文旨在分享技术进行安全学习,禁止非法利用. 本文中我将完整的阐述如何通过建立一个非常邪恶的网络接入点来使得用户进行自动文件下载.整个过程中我将使用 Nexus 9 来运行Kali NetH ...
- Django 学习笔记之六 建立一个简单的博客应用程序
最近在学习django时建立了一个简单的博客应用程序,现在把简单的步骤说一下.本人的用的版本是python 2.7.3和django 1.10.3,Windows10系统 1.首先通过命令建立项目和a ...
随机推荐
- greenplum 导入数据方式
参考: http://gpdb.docs.pivotal.io/4390/admin_guide/load/topics/g-working-with-file-based-ext-tables.ht ...
- mac flutter 创建过程及遇到的问题
参考: 1.入门: 在macOS上搭建Flutter开发环境 系统要求 2.mac配置环境变量 1.打开终端 2.clone flutter 命令: git clone -b beta https:/ ...
- maze-----攻防世界
题目下载之后在linux上查看一下 发现是elf文件尝试运行一下: 要求输入正确的flag才可以,ida查看 交叉引用 对长度和开头对比,进行判断. 转到400690查看 和#进行比较,hex 是一个 ...
- xcode windows版安装使用教程
随着iPhone.iPad.Mac等苹果产品越来越火爆,越来越多的初学者想要了解和尝试苹果平台,包括苹果操作系统Mac OS X.苹果演示软件Keynote.苹果开发工具Xcode等.然而,苹果电脑价 ...
- oracle根据一张表更新另外一张表
知道是两张表进行更新,之前作过mysql的,直接就写了: update a,b set a.code = b.code wehre a.id = b.id 然后就报错了,上网查了下知道oracle不能 ...
- gitbook简单教程
简介 GitBook 是一个基于 Node.js 的命令行工具,可使用 Github/Git 和 Markdown 来制作精美的电子书.GitBook支持输出以下几种文档格式 静态站点:GitBook ...
- Project导入RedMine甘特图展示
前端时间因公司业务需要使用RedMine来管理项目进度. 但是使用其自带的csv导入工具无法完成导入. 而我是java开发,并不会所谓的ruby语言,自然无法在段时间内完成此导入功能的修改. so,经 ...
- VMWare 禁用vmem虚拟内存文件
使用 VMWare 虚拟机,虚拟机启动后,会在虚拟机目录下建立一个与虚拟内存大小相同的 .vmem文件 这个文件主要是将虚拟机内存的内容映射到磁盘,以支持在虚拟机的暂停等功能 对所有的虚拟机" ...
- C# 控件缩写规范
标准控件缩写规范 类 型 前 缀 示 例 Adrotator adrt adrtTopAd BulletedList blst blstCity Button btn btnSubmit Calend ...
- oracle 导出时报错EXP-00011:table不存在
oracle11g,在用exp命令备份数据库时,如果表中没有数据报EXP-00011错误,对应的表不存在.这导致对应的空表无法备份. 原因:11g默认创建一个表时不分配segment,只有在插入数据时 ...