1. tf.reduce_sum()
2.tf.equal()
equal,相等的意思。顾名思义,就是判断,x, y 是不是相等,它的判断方法不是整体判断,而是逐个元素进行判断,如果相等就是True,不相等,就是False。
张量之间 的比较
import tensorflow as tf
a = [[1,2,3],[4,5,6]]
b = [[1,0,3],[1,5,1]]
with tf.Session() as sess:
print(sess.run(tf.equal(a,b)))
out:
[[ True False True]
[False True False]]
3.enumerate
enumerate(sequence, [start=0]) 其中sequence是一个序列,迭代器或其他支持迭代的对象 start是下标起始位置 返回枚举对象 以下代码是使用enumerate的示例
4.tf.nn.softmax(logits, axis=1) 和 tf.argmax
- 作用:softmax函数的作用就是归一化。
- 输入: 全连接层(往往是模型的最后一层)的值,一般代码中叫做logits
- 输出: 归一化的值,含义是属于该位置的概率,
tf.argmax: 根据axis取值的不同返回 相应轴上 最大值的索引
test = np.array([
[1, 2, 3],
[2, 3, 4],
[5, 4, 3],
[8, 7, 2]])
np.argmax(test, 0) #输出:array([3, 3, 1]
np.argmax(test, 1) #输出:array([2, 2, 0, 0]
5.tf.cast()
cast(x, dtype, name=None)
- 第一个参数 x: 待转换的数据(张量)
- 第二个参数 dtype: 目标数据类型
- 第三个参数 name: 可选参数,定义操作的名称
correct = tf.cast(tf.equal(pred, y), dtype=tf.int32) # tf.equal 张量之间d 比较
6.tf加载模型“AttributeError: ‘str‘ object has no attribute ‘decode‘ “
这个问题 网上也有教程 ,但是还是会有 有些小伙伴用了这个方法任然报错,部分原因如下
tf装在虚拟环境里的小伙伴,直接在命令行 pip install h5py==2.10 -i https://pypi.doubanio.com/simple 没有用的 ,因为这样更新的h5py 是在 anaconda下的,虚拟环境是独立的 ,需要 进入 虚拟环境后,再安装如下
7. model.compile()和model.fit()
model.compile() : model.compile()方法用于在配置训练方法时,告知训练时用的优化器、损失函数和准确率评测标准,如:
model.compile(optimizer = 优化器,
loss = 损失函数,
metrics = ["准确率”])
model.fit(): model.fit()方法用于执行训练过程
fit( x=None, #输入的x值
y=None, #输入的y标签值
batch_size=None, #整数 ,每次梯度更新的样本数即批量大小。未指定,默认为32。
epochs=1, #迭代次数
verbose=1, #整数,代表以什么形式来展示日志状态
callbacks=None, #回调函数,这个list中的回调函数将会在训练过程中的适当时机被调用,参考 回调函数
validation_split=0.0, #浮点数0-1之间,用作验证集的训练数据的比例。模型将分出一部分不会 被训练的验证数据,并将在每一轮结束时评估这些验证数据的误差和任何其他模型指标。
validation_data=None, #这个参数会覆盖 validation_split,即两个函数只能存在一个,它的输入为元组 (x_val,y_val),这作为验证数据。
shuffle=True, #布尔值。是否在每轮迭代之前混洗数据
class_weight=None,
sample_weight=None,
initial_epoch=0,
steps_per_epoch=None, #一个epoch包含的步数(每一步是一个batch的数据送入),当使用如TensorFlow数据Tensor之类的输入张量进行训练时,默认的None代表自动分割,即数据集样本数/batch样本数。
validation_steps=None, #在验证集上的step总数,仅当steps_per_epoch被指定时有用。
validation_freq=1, #指使用验证集实施验证的频率。当等于1时代表每个epoch结束都验证一次
max_queue_size=10,
workers=1,
use_multiprocessing=False
)
实例如下:
network.compile(optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy'])
network.fit(train_db, epochs=20, validation_data=test_db, validation_freq=2)
8.Dataset.from_tensor_slices()
对features数据包,labels数据包特征切片
实现features 与labels数据的一一配对
9.tf.squeeze()
squeeze(
input,
axis=None,
name=None,
squeeze_dims=None
)
再看一个例子:
# 't' 是一个维度是[1, 2, 1, 3, 1, 1]的张量
tf.shape(tf.squeeze(t)) # [2, 3], 默认删除所有为1的维度
# 't' 是一个维度[1, 2, 1, 3, 1, 1]的张量
tf.shape(tf.squeeze(t, [2, 4])) # [1, 2, 3, 1],标号从零开始,只删掉了2和4维的1
10.model.evaluate() 和 model.predict()
model.evaluate输入数据(data)和标签(label),输出损失和精确度.
model.predict输入数据(data),输出预测结果
loss,accuracy = model.evaluate(X_test,Y_test)
y_pred = model.predict(X_test,batch_size = 1)
11.张量的维度
xx = tf.random.normal([2, 3, 4], dtype=tf.float32) out: 张量的维度 比如3维张量 shape=(2,3,4),从外往里读 这个三维张量包括2个二维张量,每个张量包括3个一维张量,每个一维张量深度为4 axis=0 到 2 表示从外到里 axis=-1 默认最里面一
12. tf.Variable()
变量初始化