数据结构论坛

首页 » 分类 » 问答 » 某小伙0基础入门深度学习,代码演示Ten
TUhjnbcbe - 2024/10/9 8:44:00

1、计算图

讲到计算图,就能和分布式的计算流程扯上关系,下面讲讲计算图的区别

tensorflow和Spark的图计算流程差不多

1.1最基础的单元

a、Spark的计算图最基础的单元是rdd(弹性分布式数据集,是一种数据结构,可以是数组,也可以是一个分区文件)但rdd存储通常是key-value形式;

b、tensorflow计算图最基础的单元则是张量(同样是一种数据结构,也可以是数组)

1.2数据能够被切分

a、spark对于不同分区的rdd可以分别读取;

b、tensorflow对于图像数据集量比较大的时候同样可以切片,分批量训练;

1.3由一个函数或者op节点进行计算

a、在spark中有rdd算子运算;

b、在tensorflow对应着不同op节点对每个分区的数据集进行运算;

1.4具有方向性

计算图中最明显的一个特征就是具有方向性,意味着每一个步骤都有先后顺序,

相信使用tensorflow的朋友构建神经网络的时候就会发现每一层之间是环环相扣的;

1.5阶段图

a、spark中的整体计算图分为阶段式计算图,每个stage对应着不同的计算图;

b、tensorflow初始化则是默认的图,当然可以根据自己需要定义不同名称的图,这种形态后和spark的阶段图有点类型;

2、Tensorflow中的tensorboard的基本解释和用法

#tf.name_scope()给graph增加层级#tf.summary.scalar标量统计结果#loss以及准确率分布等#tf.summary.images图片统计结果#tf.summary.audio音频统计结果#tf.distributions#横轴为训练步数,纵轴为权重,图形为max,93%,84%,69%,50%,31%,16%,7%,min权重分布#tf.summary.histogram取值分布结果#histogram两种模式:#overlay横轴为权重,纵轴为频数,选择时为步数#offset横轴为权重,纵轴为训练步数,选择时为频数

tf.summary.merge_all()将summary中的操作合并

定义各个图和节点,示例如下所示,完成之后可以在命令进行相应的logs文件夹

使用tensorboard—logdir=logs启动tensorboard,进入.0.0.1:+相应端口号即可打开相应的web界面

importtensorflowastfimportnumpyasnpdefadd_layer(inputs,in_size,out_size,n_layer,active_function=None):layer_name=layer%s%n_layerwithtf.name_scope(layer_name):withtf.name_scope(weights):Weights=tf.Variable(tf.random_normal([in_size,out_size]),name=W)tf.summary.histogram(layer_name+/weights,Weights)withtf.name_scope(biases):biases=tf.Variable(tf.zeros([1,out_size])+0.1,name=b)tf.summary.histogram(layer_name+/biases,biases)withtf.name_scope(wx_b):predict=tf.add(tf.matmul(inputs,Weights),biases)ifactive_functionisNone:outputs=predictelse:outputs=active_function(predict)tf.summary.histogram(layer_name+/outputs,outputs)returnoutputsx_data=np.linspace(-1,1,)[:,np.newaxis]biases=np.random.normal(0,0.05,x_data.shape)y_data=np.square(x_data)-0.5+biaseswithtf.name_scope(inputs):train_x=tf.placeholder(tf.float32,[None,1],name=x_input)label=tf.placeholder(tf.float32,[None,1],name=y_input)l1=add_layer(train_x,1,10,n_layer=1,active_function=tf.nn.relu)l2=add_layer(l1,10,1,n_layer=2,active_function=None)withtf.name_scope(loss):loss=tf.reduce_mean(tf.reduce_sum(tf.square(label-l2),reduction_indices=[1]))tf.summary.scalar(loss,loss)withtf.name_scope(train):train=tf.train.GradientDescentOptimizer(0.05).minimize(loss)sess=tf.Session()init=tf.global_variables_initializer()merge=tf.summary.merge_all()writer=tf.summary.FileWriter(logs/,sess.graph)sess.run(init)foriinrange():sess.run(train,feed_dict={train_x:x_data,label:y_data})ifi%50==0:print(sess.run(loss,feed_dict={train_x:x_data,label:y_data}))result=sess.run(merge,feed_dict={train_x:x_data,label:y_data})writer.add_summary(result,i)

由于作者水平有限,欢迎参照指正

加入我们,给小编辑留言。

1
查看完整版本: 某小伙0基础入门深度学习,代码演示Ten