概述
在jupyter nootbook中编辑和运行
一 TensorFlow
步骤:
一。import tensorflow as tf
二。载入数据
(数据分批)
三。定义placeholder(之后传入训练集)
x = tf.placeholder(tf.float32, [维度], name = "")
四。定义结构和参数(w,b)
写出预测函数z = (激活函数(wx + b))
可以进行dropout(防止过拟合)
第四步每一层神经网络都要定义一次(最后一层的激活函数一般和前面不一样)
w = tf.Variable(tf.zeros([]))
wx_plus_b = tf.matmul(w, x) + b
L1 = tf.nn.激活函数(wx_plus_b) (最后一层命名为prediction)
#dropout
keep_prob=tf.placeholder(tf.float32)(或直接定义为一个常数)
L1_drop = tf.nn.dropout(L1,keep_prob)
五。定义代价函数(二次代价函数,交叉熵代价函数)
loss = tf.reduce_mean(tf.square(y-prediction))(二次代价函数)(下面是交叉熵代价函数)
loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(labels=y,logits=prediction))
或tf.nn.sigmoid_cross_entropy_with_logits
prediction是预测函数(不带激活函数(softmax或sigmoid,一般最后一层都用这两个),因为这个函数里做了)
(tf.reduce_mean是求平均值)
六。优化器训练,定义学习率(随机梯度下降等很多)
train_step = tf.nn.GradientDescentOptimizer(0.5).minimize(loss)
tf.nn.AdadeltaOptimizer()
tf.nn.adagradOptimizer()
....很多种优化方法
七。求准确率
correct_prediction = tf.equal(tf.argmax(y,1),tf.argmax(prediction,1))
#argmax返回一维张量中最大的值所在的位置,tf.equal判断相等
accuracy = tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
八。初始化变量
init = tf.global_variabies_initializer()
九。with tf.Session as sess:
sess.run(init)
for epoch in range(51):#训练51次
sess.run([] ,feed_dict = {x: , y: })
#[]里写要运行的OP,如train_step. 后面feed值。
这个函数可以有返回值,返回值为OP的执行结果。如果OP是一个元素就返回一个值;
若OP是一个list,则返回list的值,若OP是一个字典类型,则返回和OP同keys的字典。
acc = sess.run(accury, feed_dict = {})
print("Iter " + str(epoch) + ",Testing Accuracy " + str(acc))
可优化的地方:
1.数据分批方式
2.训练数据多少
3.换激活函数
4.增加神经元和网络层数
5.加dropout(调整dropout的参数keep_prob)或正则化
6.学习率
7.换优化方式
8.训练次数增多
使用tensorBoard做网络可视化
1.每个部分(基本上按照前面的步骤分块)前面加命名空间,里面可以再加子空间
with tf.name_scope('自己定义空间名'):
with tf.name_scope(''):(placeholder和variable要加name参数,别的不用)
x = placeholder(tf.float32,[None,10],name = "x_input")
2.最后的with tf.Session() as sess:里面加:
writer = tf.summary.FileWriter('logs/(自己定义路径和文件夹)',sess.graph)
3.运行,打开命令提示符窗口cmd,输入d: (转到d盘)
tensorboard --logdir=路径,(路径就是刚才定义的logs文件夹位置,没定义路径自动在项目文件夹里面)
然后用谷歌浏览器(不要360)打开给的网址
改动程序后,要把文件删了,然后要选restart clearOutput。
绘图:
tf.summary.scalar("", w) 求a参数的标量图(变化图)
tf.summary.histogram("",w) 直方图
可以求loss和accuracy的标量图,w和b的标量图
最后加一句 合并所有的summary
merged = tf.summary.merge_all()
在with里面sess.run(train_step, feed_dict={x:batch_xs, y:batch_ys})这句话改成:
summary, _ = sess.run([merged, train_step],feed_dict={x:batch_xs, y:batch_ys})
writer.add_summary(summary)
二 Keras
model = Sequential()
#第一层(输入层)
model.add(Dense(input_dim = 28*28, output_dim = 500))
model.add(Activation('sigmoid'))
#第二层
model.add(Dense(output_dim = 500))
model.add(Activation('sigmoid'))
#第三层(输出层)
model.add(Dense(output_dim = 10))
model.add(Activation('softmax'))
#损失函数和优化器
model.compile(loss = 'mse',
optimizer = SGD(lr = 0.1),
metrics = ['accuracy'])
#训练
model.fit(x_train, y_train, batch_size = 100, nb_epoch = 20)
#测试
score = model.evaluate(x_text, y_text)
print('Total loss on Testing Set:', score[0])
print('Accuracy of Testing Set:', score[1])
#应用预测
result = model.predict(x_test)
最后
以上就是温柔羽毛为你收集整理的TensorFlow和keras基础使用一 TensorFlow二 Keras的全部内容,希望文章能够帮你解决TensorFlow和keras基础使用一 TensorFlow二 Keras所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复