发布于2019-08-22 15:43 阅读(752) 评论(0) 点赞(20) 收藏(4)
最近在deeplearning.ai上跟着做了几个入门项目,受益匪浅,特记录以温故而知新:
(一)预测房价,线性回归
通过给出的房价市场价格,1个卧室的100k,2个卧室的150k。。。预测出7个卧室的房价。
只使用单神经元结构来预测房价,使用SGD优化器。
单神经元结构:等价于线性结构 , g=1(即线形激活函数)。
SGD:随机梯度优化。
代码:
- import tensorflow as tf
- import numpy as np
- from tensorflow import keras
-
- model = tf.keras.Sequential([keras.layers.Dense(units=1, input_shape=[1])]) *单神经元units=1
- model.compile(optimizer='sgd', loss='mean_squared_error') *每次迭代训练一个样本且梯度下降运行一次更新一次损失函数。
-
- xs = np.array([1, 2, 3, 4, 5, 6]) * 房间数量
-
- ys = np.array([1,1.5 ,2, 2.5, 3, 3.5]) *将房价特征缩放/100k,加快模型收敛速度
-
- model.fit(xs, ys, epochs=500) *训练500次
- print(model.predict([7])) *预测输入为7的输出...
结果:由于给出的样本数量较小,训练500次后预测结果为399.8k,基本拟合出50k+50k*n的房价规则。
- .
- .
- Epoch 497/500
- 6/6 [==============================] - 0s 509us/sample - loss: 1.3851e-06
- Epoch 498/500
- 6/6 [==============================] - 0s 325us/sample - loss: 1.3749e-06
- Epoch 499/500
- 6/6 [==============================] - 0s 305us/sample - loss: 1.3649e-06
- Epoch 500/500
- 6/6 [==============================] - 0s 388us/sample - loss: 1.3549e-06
- [[3.998321]]
(二) 手写数字辨认, Deep NN结构。
通过内置的minist 60000训练集进行训练。
要点:calback函数调用,达到目标值即中断训练。
DNN结构如图:
代码:
- import tensorflow as tf
-
- class myCallback(tf.keras.callbacks.Callback): *callback对象
- def on_epoch_end(self, epoch, logs={}):
- if(logs.get('acc')>0.99):
- print("\nReached 99% accuracy so cancelling training!")
- self.model.stop_training = True
-
-
- mnist = tf.keras.datasets.mnist *导入minist数据集
-
- (x_train, y_train),(x_test, y_test) = mnist.load_data()
- x_train, x_test = x_train / 255.0, x_test / 255.0
-
- callbacks = myCallback()
-
- model = tf.keras.models.Sequential([
- tf.keras.layers.Flatten(input_shape=(28, 28)), *将28*28像素列表化
- tf.keras.layers.Dense(512, activation=tf.nn.relu),
- tf.keras.layers.Dense(10, activation=tf.nn.softmax)
- ])
-
- model.compile(optimizer='adam',
- loss='sparse_categorical_crossentropy',
- metrics=['accuracy'])
-
-
- model.fit(x_train, y_train, epochs=10, callbacks=[callbacks])
结果:
- Epoch 1/10
- 60000/60000 [==============================] - 7s 119us/sample - loss: 0.2020 - acc: 0.9411
- Epoch 2/10
- 60000/60000 [==============================] - 7s 116us/sample - loss: 0.0803 - acc: 0.9753
- Epoch 3/10
- 60000/60000 [==============================] - 7s 124us/sample - loss: 0.0536 - acc: 0.9833
- Epoch 4/10
- 60000/60000 [==============================] - 7s 122us/sample - loss: 0.0373 - acc: 0.9879
- Epoch 5/10
- 59872/60000 [============================>.] - ETA: 0s - loss: 0.0264 - acc: 0.9919
- Reached 99% accuracy so cancelling training!
- 60000/60000 [==============================] - 7s 125us/sample - loss: 0.0263 - acc: 0.9920
- <tensorflow.python.keras.callbacks.History at 0x7f67010de8d0>
作者:goodbody
链接:https://www.pythonheidong.com/blog/article/52541/6369d65748187bfd731c/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!