第一个tensorflow程序

个人博客: http://zhangsunyucong.top

图片
最近AlphaGo和AlphaZero的出现,预示着2017年成为人工智能元年,人工智能逐渐进入我们的生活和工作的方方面面,如在工作中,阿里巴巴双十一中,出现了“千人千面”智能推荐系统,鲁班AI设计师,小蜜机器人,IDC智能巡检机器人,还有京东的无人仓库等。这些都让我觉得人工智能越来越重要和越来越感兴趣,所以决定学习python和tensorflow。现在就以一个使用tensorflow构建一元线性模型开始我的人工智能学习吧。

人工智能,机器学习,深度学习关系

人工智能是计算机学科的一个分支,诞生于1956年。机器学习是人工智能的范畴,它包含了深度学习。深度是指多层的意思,模型经过多层的神经网络的训练,不断的学习和调整模型的参数,最后得到最优损失函数最小的模型。深度学习能够有效的处理现实生活中的“非线性”问题。tensorflow是目前最受欢迎的深度学习框架。

几个tensorflow的关键词语,张量,流,计算图。更多的建议阅读:《Tensorflow实战》

下面直接上最简单的一元线性回归模型代码:
电脑环境:

  • python版本:3.6.3.
  • tensorflow版本:cpu版,1.3
  • window 7 64位
  • IDE:PyCharm
import tensorflow as tf

session = tf.Session()
# X轴参数
w = tf.Variable([.3], dtype=tf.float32)
# 偏移量
b = tf.Variable([-.3], dtype=tf.float32)
# x轴
x = tf.placeholder(tf.float32)
# 一元线性模型
linear_model = w * x + b
# 实际值
y = tf.placeholder(tf.float32)
# 观测值和实际值的误差的平方差
squared_deltas = tf.square(linear_model - y)
# 最少二乘法。损失函数
loss = tf.reduce_sum(squared_deltas)
# 优化器.优化函数
optimizer = tf.train.GradientDescentOptimizer(0.01)
train = optimizer.minimize(loss)
# 初始化所有的变量
init = tf.global_variables_initializer()
session.run(init)
# 开始训练。训练的过程就是结合优化函数使损失函数的损失最少
x_train = [1,2,3,4]
y_train = [0, -1,-2,-3]
for i in range(1000):
    session.run(train, {x: x_train, y: y_train})
# 训练的结果
curr_W, curr_b, curr_loss = session.run([w, b, loss], {x: x_train, y: y_train})
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss))

模型输出结果是:

W: [-0.9999969] b: [ 0.99999082] loss: 5.69997e-11

公式表示是: Y=0.9999969X+0.99999082 Y = − 0.9999969 X + 0.99999082 , 损失为:5.69997e-11

以下是一个二维卷积神经网络的tensorflow程序示例: ```python import tensorflow as tf # 定义输入和输出 x = tf.placeholder(tf.float32, shape=[None, 28, 28, 1]) y = tf.placeholder(tf.float32, shape=[None, 10]) # 定义卷积层 conv1 = tf.layers.conv2d(inputs=x, filters=32, kernel_size=[5, 5], padding="same", activation=tf.nn.relu) pool1 = tf.layers.max_pooling2d(inputs=conv1, pool_size=[2, 2], strides=2) # 定义第二个卷积层 conv2 = tf.layers.conv2d(inputs=pool1, filters=64, kernel_size=[5, 5], padding="same", activation=tf.nn.relu) pool2 = tf.layers.max_pooling2d(inputs=conv2, pool_size=[2, 2], strides=2) # 将卷积层的输出展平为一维向量 pool2_flat = tf.reshape(pool2, [-1, 7 * 7 * 64]) # 定义全连接层 dense = tf.layers.dense(inputs=pool2_flat, units=1024, activation=tf.nn.relu) dropout = tf.layers.dropout(inputs=dense, rate=0.4) # 定义输出层 logits = tf.layers.dense(inputs=dropout, units=10) # 定义损失函数和优化器 loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y, logits=logits)) train_op = tf.train.AdamOptimizer(learning_rate=0.001).minimize(loss) # 训练模型 with tf.Session() as sess: sess.run(tf.global_variables_initializer()) for i in range(1000): batch_x, batch_y = mnist.train.next_batch(100) sess.run(train_op, feed_dict={x: batch_x, y: batch_y}) if i % 100 == 0: acc = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels}) print("Step %d, accuracy: %f" % (i, acc)) ``` 此程序使用了两个卷积层和一个全连接层,通过交叉熵损失函数和Adam优化器进行训练。在训练过程中,使用了MNIST数据集进行测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值