用Tensorflow搭建网络

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。用Tensorflow搭建网络,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

用Tensorflow搭建网络

创建层

创建密集连接层,并应用激活函数

x = tf.placeholder(tf.float32, shape=[None, 3])
linear_model = tf.layers.Dense(units=1)
y = linear_model(x)

初始化层

包含变量的层都需要经过初始化

init = tf.global_variables_initializer()
sess.run(init)

执行层

print(sess.run(y, {x: [[1, 2, 3],[4, 5, 6]]}))
# [[-3.41378999]
#  [-9.14999008]]

层函数的快捷方式

快捷方式是在单次调用中创建和运行层

x = tf.placeholder(tf.float32, shape=[None, 3])
y = tf.layers.dense(x, units=1)

init = tf.global_variables_initializer()
sess.run(init)

print(sess.run(y, {x: [[1, 2, 3], [4, 5, 6]]}))

尽管这种方式很方便,但是无法访问 tf.layers.Layer 对象。这会让自省和调试变得困难,并且无法重复的使用相同的层。

训练

定义数据

定义一些输入x,以及每个输入值的预期输出值 y_true:

x = tf.constant([[1], [2], [3], [4]], dtype=tf.float32)
y_true = tf.constant([[0], [-1], [-2], [-3]], dtype=tf.float32)

定义模型

接下来,创建一个简单的线性模型,其输出值只有1个:

linear_model = tf.layers.Dense(units=1)

y_pred = linear_model(x)

搭建好模型后,我们可以运行一次,看看第一次运行的预测值:

sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)

print(sess.run(y_pred))

# [[ 0.02631879]
#  [ 0.05263758]
#  [ 0.07895637]
#  [ 0.10527515]]

损失

我们使用均方误差来定义损失函数,虽然可以使用用较低级别的数学运算手动定义,但 tf.losses 模块提供了一系列常用的损失函数。

loss = tf.losses.mean_squared_error(labels=y_true, predictions=y_pred)

print(sess.run(loss))        # 2.23962

训练,TensorFlow提供了执行标准化算法啊的优化器 (tf.train.Optimizer),最简单的是梯度下降法,由实现 tf.train.GradientDescentOptimizer 

optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)

for i in range(100):
    _, loss_value = sess.run((train, loss))
    print(loss_value)
print(sess.run(y_pred))

 

 

posted @ 2019-01-13 23:07 凌逆战 阅读(…) 评论(…) 编辑 收藏

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/159266.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!