TensorFlow学习笔记......更新中......

tensorflow官方的教程https://tensorflow.google.cn/tutorials/customization/basics

初学者快速入门

 

复制代码
import tensorflow as tf
#载入并准备好MNIST数据集,将样本从整数转换为浮点数

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

#将模型的各层堆叠起来,以搭建tf.keras.Sequential模型。为训练选择优化器和损失函数
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

#训练并检验模型
model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test,  y_test, verbose=2)
复制代码

输出:

Epoch 1/5
1875/1875 [==============================] - 13s 6ms/step - loss: 0.3004 - accuracy: 0.9129
Epoch 2/5
1875/1875 [==============================] - 7s 4ms/step - loss: 0.1440 - accuracy: 0.9574
Epoch 3/5
1875/1875 [==============================] - 6s 3ms/step - loss: 0.1074 - accuracy: 0.9677
Epoch 4/5
1875/1875 [==============================] - 6s 3ms/step - loss: 0.0881 - accuracy: 0.9730
Epoch 5/5
1875/1875 [==============================] - 6s 3ms/step - loss: 0.0751 - accuracy: 0.9775
313/313 - 1s - loss: 0.0741 - accuracy: 0.9769
Out[15]:
[0.07411046326160431, 0.9768999814987183]

 

 

张量(Tensors)

  1.张量是一个多维数组。与 NumPyndarray对象类似,tf.Tensor对象具有数据类型和形状。此外,tf.Tensors 可以驻留在加速器内存中(如 GPU)。TensorFlow 提供了一个丰富的操作库(tf.addtf.matmultf.linalg.inv等)来消费和生产tf.Tensors。这些操作会自动转换内置的 Python 类型(官网翻译)

print(tf.add(1,2))
print(tf.add([1,2],[3,4]))
print(tf.square(5))
print(tf.reduce_sum([1,2,3]))

#operator overloading is also supported  还支持操作符重载 
print(tf.square(2) + tf.square(3))

输出:

tf.Tensor(3, shape=(), dtype=int32)
tf.Tensor([4 6], shape=(2,), dtype=int32)
tf.Tensor(25, shape=(), dtype=int32)
tf.Tensor(6, shape=(), dtype=int32)
tf.Tensor(13, shape=(), dtype=int32)

  2.每个tf.Tensor都有一个形状和一个数据类型:

x = tf.matmul([[1]], [[2,3]])
print(x)
print(x.shape)
print(x.dtype)

 

输出:

tf.Tensor([[2 3]], shape=(1, 2), dtype=int32)
(1, 2)
<dtype: 'int32'>

  3.NumPy 兼容性

TensorFlowtf.Tensor和 NumPy之间的转换ndarray很容易:

  • TensorFlow 操作会自动将 NumPy ndarray 转换为张量。
  • NumPy 操作会自动将张量转换为 NumPy ndarray。

张量使用他们的方法显式转换为 NumPy ndarray .numpy()如果可能的话,这些转换通常很便宜,因为数组并tf.Tensor共享底层内存表示。然而,共享底层表示并不总是可能的,因为它tf.Tensor可能托管在 GPU 内存中,而 NumPy 数组总是由主机内存支持,并且转换涉及从 GPU 到主机内存的复制。

复制代码
import numpy as np

ndarray = np.ones([3,3])

print("将数组转换成张量")
tensor = tf.multiply(ndarray,42)
print(tensor)

print("将张量转换为数组")
print(np.add(tensor,1))

print(".numpy()方法显式地将张量转换为numpy数组")
print(tensor.numpy())
复制代码

输出:

将数组转换成张量
tf.Tensor(
[[42. 42. 42.]
 [42. 42. 42.]
 [42. 42. 42.]], shape=(3, 3), dtype=float64)
将张量转换为数组
[[43. 43. 43.]
 [43. 43. 43.]
 [43. 43. 43.]]
.numpy()方法显式地将张量转换为numpy数组
[[42. 42. 42.]
 [42. 42. 42.]
 [42. 42. 42.]]

  4.数据集:tf.data.DatasetAPI 用于从简单、可重用的部分构建高性能、复杂的输入管道,这些部分将为模型的训练或评估循环提供数据。

   创建源Dataset:使用工厂函数之一创建Dataset.from_tensors数据集,如,Dataset.from_tensor_slices或使用从文件中读取的对象,如TextLineDatasetTFRecordDataset

复制代码
ds_tensors = tf.data.Dataset.from_tensor_slices([1,2,3,4,5,6])

#创建一个csv文件
import tempfile
_,filename = tempfile.mkstemp()

with open(filename, 'w') as f:
    f.write("""Line 1
    Line 2
    Line 3
    """)
ds_file = tf.data.TextLineDataset(filename)
复制代码

应用转换:使用 、 和 等转换函数mapbatch转换shuffle应用于数据集记录。

ds_tensors = ds_tensors.map(tf.square).shuffle(2).batch(2)

ds_file = ds_file.batch(2)

迭代:tf.data.Dataset对象支持迭代以循环记录:

print('ds_tensors的元素')
for x in ds_tensors:
  print(x)

print('\nds_file的元素')
for x in ds_file:
  print(x)

输出:

ds_tensors的元素
tf.Tensor([4 9], shape=(2,), dtype=int32)
tf.Tensor([16  1], shape=(2,), dtype=int32)
tf.Tensor([36 25], shape=(2,), dtype=int32)

ds_file的元素
tf.Tensor([b'Line 1' b'    Line 2'], shape=(2,), dtype=string)
tf.Tensor([b'    Line 3' b'    '], shape=(2,), dtype=string)

TensorFlow常数 (TensorFlow Constants)

constant(value, dtype=None, shape=None, name='Const', verify_shape=False)

创建

myConstant = tf.constant(4.5, name="x", dtype=tf.float32)

TensorFlow变量 (TensorFlow Variables)

在TensorFlow中,当我们训练模型时变量非常有用。 作为常量,我们必须调用构造函数来初始化变量,初始值可以作为参数传递。 创建变量很容易,可以按照以下步骤进行:

myVariable = tf.Variable(tf.zeros([1]), name="myVariable")

如果我们只想将变量用于计算并且不应该对其进行训练,则可以使用可训练标志,如下所示:

k = tf.Variable(tf.add(a, b), trainable=False)

 

占位符(Placeholder)

占位符,用于表示输入输出数据的格式,声明了数据位置,允许传入指定类型和形状的数据,通过会话中的feed_dict参数获取数据,在计算图运行时使用获取的数据进行计算,计算完毕后获取的数据就会消失。

x = tf.compat.v1.placeholder(tf.int32)
y = tf.compat.v1.placeholder(tf.int32)
z = tf.add(x, y)
session = tf.compat.v1.Session()
with session:
    print(session.run([z], feed_dict={x: [1, 2], y: [2, 3]}))

输出:

[array([3, 5])]


网址:

 (1条消息) tensorflow 菜鸟教程 - CSDN

 Tensorflow基础 - 菜鸟教程 | BootWiki.com

(1条消息) Python TensorFlow教程_cunchi4221的博客-CSDN博客

 

posted @   兴奋的雪鹰  阅读(41)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示