TensorFlow入门(一)

TensorFlow环境搭建

mac os环境:

macOS 10.12.6(Sierra)或更高版本(不支持GPU)
需要 Xcode 8.3 或更高版本

  • 使用Python的pip软件包管理器安装TensorFlow

//首次安装
pip install tensorflow

//升级
pip install --user --upgrade tensorflow


//验证是否安装成功
python -c "import tensorflow as tf; tf.enable_eager_execution(); print(tf.reduce_sum(tf.random_normal([1000, 1000])))"

如果出现像我一样的报错


err

更新库:

pip install --upgrade numpy
  • docker 容器运行tensorflow

首先在mac os安装docker,使用docker 命令在终端运行容器

推荐使用这种方式,部署简单随心所欲


//在容器中run tensorflow 映射本地端口 
docker run  --name=tensorflow  -it --rm -v $(realpath ~/notebooks):/tf/notebooks -p 8888:8888 tensorflow/tensorflow:latest-py3-jupyter

docker 容器运行后会看到token


tensorflow容器运行成功

保持容器后台运行并推出 : control + p , control +q

使用Jupyter notebook server进行操作,使用浏览器打开
http://localhost:8888

copy token值点击login,写下造物主语句hello wold


//测试代码

import tensorflow as tf
from tensorflow.keras import layers

print(tf.VERSION)
print(tf.keras.__version__)

tf.enable_eager_execution(); 
print(tf.reduce_sum(tf.random_normal([1000, 1000])));
tensorflow容器运行成功

TensorFlow Keras指南

TensorFlow是一个用于研究和生产的开源机器学习库。TensorFlow为初学者和专家提供API,以便为桌面,移动,Web和云开发

高级Keras API提供构建块来创建和训练深度学习模型

  • 训练第一个神经网络-基础分类

案例是Google出的学习Demo

使用的是 tf.keras,它是一种用于在 TensorFlow 中构建和训练模型的高阶 API

copy一下code至juputer 运行,可以自己调试

# TensorFlow and tf.keras
import tensorflow as tf
from tensorflow import keras

# Helper libraries
import numpy as np
import matplotlib.pyplot as plt

print(tf.__version__)

# Fashion MNIST 数据集导入
# 将使用 60000 张图像训练网络,并使用 10000 张图像评估经过学习的网络分类图像的准确率
# 加载数据集会返回 4 个 NumPy 数组
fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()


# 标签是整数数组,介于 0 到 9 之间。这些标签对应于图像代表的服饰所属的类别

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
# 检查数据格式
# 60000 张图像,每张图像都表示为 28x28 像素
# 输出为(60000, 28, 28)
train_images.shape
# 数据长度
len(train_labels)
print("数据长度:",len(train_labels))

train_labels
print("标签:",train_labels)

# 测试集1000张 28*28像素的图片
test_images.shape

print("数据预处理,检查第一张图 应该 0 到 255 之间")

#训练的时候注释掉,但必须运行一次
plt.figure()
plt.imshow(train_images[0])
plt.colorbar()
plt.grid(False)

# 将这些值缩小到 0 到 1 之间,然后将其馈送到神经网络模型,将图像组件的数据类型从整数转换为浮点数,然后除以 255
train_images = train_images / 255.0

test_images = test_images / 255.0

#训练的时候注释掉,但必须运行一次
plt.figure(figsize=(10,10))
for i in range(25):
    plt.subplot(5,5,i+1)
    plt.xticks([])
    plt.yticks([])
    plt.grid(False)
    plt.imshow(train_images[i], cmap=plt.cm.binary)
    plt.xlabel(class_names[train_labels[i]])
    
 

print("构建神经网络需要先配置模型的层,然后再编译模型")

model = keras.Sequential([
    keras.layers.Flatten(input_shape=(28, 28)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])

# 编译模型
print("start 编译模型")

model.compile(optimizer=tf.train.AdamOptimizer(),
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

# 训练模型 epochs值自己修改
print("start 训练模型")

model.fit(train_images, train_labels, epochs=5)


print ("评估准确率:比较一下模型在测试数据集上的表现")
test_loss, test_acc = model.evaluate(test_images, test_labels)

print('测试数据的准确率:', test_acc)


print ("做出预测")
predictions = model.predict(test_images)

#看看第一个预测  ,数组的10个数字代表了每个标签的可信度预测
predictions[0]

print("获取可信度最大值:",np.argmax(predictions[0]))

# 检查测试标签以查看该预测是否正确
test_labels[0]

# 将该预测绘制成图来查看全部 10 个通道
def plot_image(i, predictions_array, true_label, img):
  predictions_array, true_label, img = predictions_array[i], true_label[i], img[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])

  plt.imshow(img, cmap=plt.cm.binary)

  predicted_label = np.argmax(predictions_array)
  if predicted_label == true_label:
    color = 'blue'
  else:
    color = 'red'

  plt.xlabel("{} {:2.0f}% ({})".format(class_names[predicted_label],
                                100*np.max(predictions_array),
                                class_names[true_label]),
                                color=color)

def plot_value_array(i, predictions_array, true_label):
  predictions_array, true_label = predictions_array[i], true_label[i]
  plt.grid(False)
  plt.xticks([])
  plt.yticks([])
  thisplot = plt.bar(range(10), predictions_array, color="#777777")
  plt.ylim([0, 1])
  predicted_label = np.argmax(predictions_array)

  thisplot[predicted_label].set_color('red')
  thisplot[true_label].set_color('blue')


print("看看第 0 张图像、预测和预测数组")

i = 0
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions,  test_labels)

# 看看第 12 张图像、预测和预测数组

i = 12
plt.figure(figsize=(6,3))
plt.subplot(1,2,1)
plot_image(i, predictions, test_labels, test_images)
plt.subplot(1,2,2)
plot_value_array(i, predictions,  test_labels)



num_rows = 5
num_cols = 3
num_images = num_rows*num_cols
plt.figure(figsize=(2*2*num_cols, 2*num_rows))
for i in range(num_images):
  plt.subplot(num_rows, 2*num_cols, 2*i+1)
  plot_image(i, predictions, test_labels, test_images)
  plt.subplot(num_rows, 2*num_cols, 2*i+2)
  plot_value_array(i, predictions, test_labels)
    
   
# 最后,使用经过训练的模型对单个图像进行预测
print("最后,使用经过训练的模型对单个图像进行预测")

img = test_images[0]

print(img.shape)


#tf.keras 模型已经过优化,可以一次性对样本批次或样本集进行预测

img = (np.expand_dims(img,0))

print(img.shape)


# 预测这张图像
predictions_single = model.predict(img)

print(predictions_single)

plot_value_array(0, predictions_single, test_labels)
_ = plt.xticks(range(10), class_names, rotation=45)


np.argmax(predictions_single[0])
    
    



可以看到训练的次数增加,模型准确度也变高,是不是越多越好呢?当然不是

模型训练

识别结果:mode对测试集进行识别


mode对测试集进行识别
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容