开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第3天,点击查看活动详情
总结:此文为12月更文计划第三天第六篇。
张量运算
继续昨天晚上的张量运算,今天是第二篇。
张量字符串常量的学习:
对一个字符串张量转化为ASCII码进行学习:
t = tf.constant("cafe")
print(t)
print(tf.strings.length(t))
print('-'*50)
print(tf.strings.length(t, unit="UTF8_CHAR"))
print('-'*50)
print(tf.strings.unicode_decode(t, "UTF8"))
输出的结果如下:
自动求出数组中每一个字符的长度,如果不加unit="UTF8_CHAR",得到的是实际字节存储的长度
将字符串张量进行字节流与汉字之间的相互转化:
t = tf.constant(["cafe", "coffee", "咖啡"])
print(tf.strings.length(t, unit="UTF8_CHAR"))
print('-'*50)
print(tf.strings.length(t, unit="BYTE"))
print('-'*50)
r = tf.strings.unicode_decode(t, "UTF8")
print(r)
输出的结果如下:
Ragged tensor的学习
# ragged tensor ,每行的元素个数不相等,ndarray是不可以这样的
r = tf.ragged.constant([[11, 12], [21, 22, 23], [], [41]])
# index op
print(r)
print('-'*50)
print(r.shape)
print('-'*50)
print(r[1]) #取一行是Tensor
print('-'*50)
#取多行也是ragged tensor
print(r[1:3])
# print(r[:,1])#不能取列索引
输出的结果如下:
ragged tensor的算数运算,与np或者pd相似,维度相同可以进行计算,如果维度不同那就不可以进行计算。
# ops on ragged tensor
r2 = tf.ragged.constant([[51, 52],[], [], [71]])
print(tf.concat([r, r2], axis = 0))
print('-'*50)
print(tf.concat([r, r2], axis = 1)) #行数不相等,不可以拼
输出的结果如下:
按轴1进行合并时,行数要一致,行数相等,可以拼
r3 = tf.ragged.constant([[13, 14], [15], [41], [42, 43]])
print(tf.concat([r, r3], axis = 1))
输出的结果如下: