在这篇文章中,我们将通过一些TensorFlow示例,感受定义张量和使用张量进行数学计算是多么容易。我还会给出一些其他机器学习相关的例子。什么是TensorFlow?TensorFlow是谷歌开发的一个库,用于解决耗时过长的复杂数学计算。事实上,TensorFlow可以做很多事情。例如:解决复杂的数学表达式机器学习技术。你给它提供一组数据样本进行训练,然后给它另一组数据样本来根据训练数据预测结果。这就是人工智能!支持GPU。您可以使用GPU(图形处理单元)代替CPU进行更快的计算。TensorFlow有两个版本:CPU版本和GPU版本。在开始写例子之前,你需要了解一些基础知识。什么是张量?Tensor是TensorFlow使用的主要数据块,它类似于变量,TensorFlow用它来处理数据。张量具有维度和类型的属性。维度是指张量的行数和列数。后面你会知道,我们可以定义一维张量、二维张量和三维张量。类型是指张量元素的数据类型。定义一维张量可以这样定义张量:创建一个NumPy数组或者Python列表,然后使用tf_convert_to_tensor函数将其转换为张量。可以像这样使用NumPy创建数组:importnumpyasnparr=np.array([1,5.5,3,15,20])arr=np.array([1,5.5,3,15,20])显示数组的维度和形状。importnumpyasnparr=np.array([1,5.5,3,15,20])print(arr)print(arr.ndim)print(arr.shape)print(arr.dtype)它与Python列表非常相似,但在这里,元素之间没有逗号。现在使用tf_convert_to_tensor函数将该数组转换为张量。importnumpyasnpiimporttensorflowastfarr=np.array([1,5.5,3,15,20])tensor=tf.convert_to_tensor(arr,tf.float64)print(tensor)这个操作的结果显示了具体的tensor意思,但不显示张量元素。要查看张量元素,运行这样的会话:importnumpyasnpimporttensorflowastfarr=np.array([1,5.5,3,15,20])tensor=tf.convert_to_tensor(arr,tf.float64)sess=tf.Session()print(sess.run(tensor))print(sess.run(tensor[1]))Defineatwo-dimensionaltensor定义一个二维张量,其方法与定义一维张量相同是一样的,但是这样定义数组:arr=np.array([(1,5.5,3,15,20),(10,20,30,40,50),(60,70,80,90,100)])然后转换为张量:importnumpyasnpimporttensorflowastfarr=np.array([(1,5.5,3,15,20),(10,20,30,40,50),(60,70,80,90,100)])tensor=tf.convert_to_tensor(arr)sess=tf.Session()print(sess.run(tensor))现在你应该知道如何定义tensor了,那么,如何呢在数量之间运行数学运算?在张量上做数学假设我们有以下两个数组:arr1=np.array([(1,2,3),(4,5,6)])arr2=np.array([(7,8,9),(10,11,12)])使用TenserFlow,你可以做很多数学运算。现在我们需要对这两个数组求和。使用加法函数求和:importnumpyasnpiimporttensorflowastfarr1=np.array([(1,2,3),(4,5,6)])arr2=np.array([(7,8,9),(10,11,12)])arr3=tf.add(arr1,arr2)sess=tf.Session()tensor=sess.run(arr3)print(tensor)也可以乘数组:importnumpyasnpi将张量流导入为tfarr1=np.array([(1,2,3),(4,5,6)])arr2=np.array([(7,8,9),(10,11,12)])arr3=tf.multiply(arr1,arr2)sess=tf.Session()tensor=sess.run(arr3)print(tensor)现在你知道了。三维张量我们已经知道如何使用一维张量和二维张量。现在,让我们看看三维张量,但这次我们不使用数字,而是使用RGB图像。在此图像中,每个像素块由x、y和z的组合表示。这些组合形成图像的宽度、高度和颜色深度。首先使用matplotlib库导入图像。如果你的系统上没有matplotlib,你可以使用pip来安装它。将图像放在与Python文件相同的目录中,然后使用matplotlib导入图像:shape)from在运行结果中,你应该可以看到这张3D图像的宽度为150,高度为150,色深为3。您还可以查看这张图片:importmatplotlib.imageasimgimportmatplotlib.pyplotasplotmyfile="likegeeks.png"myimage=img.imread(myfile)plot.imshow(myimage)plot.show()酷!那么如何使用TensorFlow来处理图像呢?超级简单。使用TensorFlow生成或裁剪图像首先,为占位符赋值:myimage=tf.placeholder("int32",[None,None,3])使用裁剪操作裁剪图像:cropped=tf.slice(myimage,[10],0,0],[16,-1,-1])***,runthissession:result=sess.run(cropped,feed\_dict={slice:myimage})然后,可以看到使用由matplotlib处理的图像。这是整个代码:importtensorflowastfiimportmatplotlib.imageasimgimportmatplotlib.pyplotasplotmyfile="likegeeks.png"myimage=img.imread(myfile)slice=tf.placeholder("int32",[None,None,3])cropped=tf.slice(myimage,[10,0,0],[16,-1,-1])sess=tf.Session()result=sess.run(cropped,feed_dict={slice:myimage})plot.imshow(result)plot.show()是不是很神奇?使用TensorFlow转换图像在本例中,我们将使用TensorFlow进行简单的转换。首先,指定要处理的图像并初始化TensorFlow变量值:)然后调用transpose函数transformation,这个函数用来翻转输入网格的0轴和1轴。sess=tf.Session()flipped=tf.transpose(image,perm=[1,0,2])sess.run(vars)result=sess.run(flipped)然后就可以看到使用matplotlib处理后的图像了。将tensorflow导入为tfimportmatplotlib.image作为imgimportmatplotlib.pyplot作为plotmyfile="likegeeks.png"myimage=img.imread(myfile)image=tf.Variable(myimage,name='image')vars=tf.global_variables_initializer()sess=tf.Session()flipped=tf.transpose(image,perm=[1,0,2])sess.run(vars)result=sess.run(flipped)plot.imshow(result)plot.show()以上这些示例都向您展示了使用TensorFlow是多么容易。
