一、Tensorflow结构

import tensorflow as tf
import numpy as np#create data
x_data=np.random.rand(100).astype(np.float32)
y_data=x_data*0.1+0.3#create tensorflow structure
Weights=tf.Variable(tf.random_uniform([1],-1.0,1.0)) #一维,范围[-1,1]
biases=tf.Variable(tf.zeros([1]))y=Weights*x_data+biasesloss=tf.reduce_mean(tf.square(y-y_data))#建立优化器,减小误差,提高参数准确度,每次迭代都会优化
optimizer=tf.train.GradientDescentOptimizer(0.5) #学习效率<1
train=optimizer.minimize(loss)#初始化变量
init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)#trainfor step in range(201):sess.run(train)if step%20==0:print(step,sess.run(Weights),sess.run(biases))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

二、Session

import tensorflow as tfmatrix1 = tf.constant([[3, 3]])
matrix2 = tf.constant([[2], [2]])# matrix multiply
# np.dot(m1,m2)
product = tf.matmul(matrix1, matrix2)# # method 1
# sess = tf.Session()  # Session是一个object,首字母要大写
# # 只有sess.run()之后,tensorflow才会执行一次
# result = sess.run(product)
# print(result)
# # close 不影响,会显得更整洁
# sess.close()# method 2
# with 可以自己关闭会话
with tf.Session() as sess:result2 = sess.run(product)print(result2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

三、Variable

import tensorflow as tfstate=tf.Variable(0,name='counter')
# print(state.name)
# 变量+常量=变量
one=tf.constant(1)
new_value=tf.add(state,one)
#将state用new_value代替
updata=tf.assign(state,new_value)#变量必须要激活
init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for _ in range(3):sess.run(updata)print(sess.run(state))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

四、placeholder

运行到sess.run()的时候再给输入

利用feed_dict绑定

import tensorflow as tf# 给定type,tf大部分只能处理float32数据
input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)# Tensorflow 1.0 修改版
# tf.mul---tf.multiply
# tf.sub---tf.subtract
# tf.neg---tf.negative
output = tf.multiply(input1, input2)with tf.Session() as sess:# placeholder在sess.run()的时候传入值print(sess.run(output, feed_dict={input1: [7.], input2: [2.]}))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

五、激励函数

解决非线性问题

要求:必须可微分

简单的神经网络一般可以使用任何激励函数;

复杂的神经网络不能随意选择,会造成梯度爆炸和梯度消失的问题;

如何选择

简述激励函数:

让某一部分的神经元先激活,传到后面的神经元,不同的神经元对不同的特征敏感。

激活函数的输出:

激活 / 抑制

一般的神经网络:

激活函数就在layer2中

六、添加层

import tensorflow as tf
import numpy as npdef add_layer(inputs,in_size,out_size,activation_function=None):#Weights是一个矩阵,[行,列]为[in_size,out_size]Weights=tf.Variable(tf.random_normal([in_size,out_size]))#正态分布#初始值推荐不为0,所以加上0.1,一行,out_size列biases=tf.Variable(tf.zeros([1,out_size])+0.1)#Weights*x+b的初始化的值,也就是未激活的值Wx_plus_b=tf.matmul(inputs,Weights)+biases#激活if activation_function is None:#激活函数为None,也就是线性函数outputs=Wx_plus_belse:outputs=activation_function(Wx_plus_b)return outputs
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

七、构建一个神经网络

import tensorflow as tf
import numpy as npdef add_layer(inputs,in_size,out_size,activation_function=None):#Weights是一个矩阵,[行,列]为[in_size,out_size]Weights=tf.Variable(tf.random_normal([in_size,out_size]))#正态分布#初始值推荐不为0,所以加上0.1,一行,out_size列biases=tf.Variable(tf.zeros([1,out_size])+0.1)#Weights*x+b的初始化的值,也就是未激活的值Wx_plus_b=tf.matmul(inputs,Weights)+biases#激活if activation_function is None:#激活函数为None,也就是线性函数outputs=Wx_plus_belse:outputs=activation_function(Wx_plus_b)return outputs"""定义数据形式"""
# (-1,1)之间,有300个单位,后面的是维度,x_data是有300行(300个例子)
x_data=np.linspace(-1,1,300)[:,np.newaxis]
# 加噪声,均值为0,方差为0.05,大小和x_data一样
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noisexs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])"""建立网络"""
#定义隐藏层,输入1个节点,输出10个节点
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
#定义输出层
prediction=add_layer(l1,10,1,activation_function=None)"""预测"""
#损失函数,算出的是每个例子的平方,要求和(reduction_indices=[1],按行求和),再求均值
loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))"""训练"""
#优化算法,minimize(loss)以0.1的学习率对loss进行减小
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for i in range(1000):sess.run(train_step,feed_dict={xs:x_data,ys:y_data})if i%50==0:print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

八、可视化

import tensorflow as tf
import numpy as np
import matplotlib.pylab as plt
def add_layer(inputs,in_size,out_size,activation_function=None):#Weights是一个矩阵,[行,列]为[in_size,out_size]Weights=tf.Variable(tf.random_normal([in_size,out_size]))#正态分布#初始值推荐不为0,所以加上0.1,一行,out_size列biases=tf.Variable(tf.zeros([1,out_size])+0.1)#Weights*x+b的初始化的值,也就是未激活的值Wx_plus_b=tf.matmul(inputs,Weights)+biases#激活if activation_function is None:#激活函数为None,也就是线性函数outputs=Wx_plus_belse:outputs=activation_function(Wx_plus_b)return outputs"""定义数据形式"""
# (-1,1)之间,有300个单位,后面的是维度,x_data是有300行(300个例子)
x_data=np.linspace(-1,1,300)[:,np.newaxis]
# 加噪声,均值为0,方差为0.05,大小和x_data一样
noise=np.random.normal(0,0.05,x_data.shape)
y_data=np.square(x_data)-0.5+noisexs=tf.placeholder(tf.float32,[None,1])
ys=tf.placeholder(tf.float32,[None,1])"""建立网络"""
#定义隐藏层,输入1个节点,输出10个节点
l1=add_layer(xs,1,10,activation_function=tf.nn.relu)
#定义输出层
prediction=add_layer(l1,10,1,activation_function=None)"""预测"""
#损失函数,算出的是每个例子的平方,要求和(reduction_indices=[1],按行求和),再求均值
loss=tf.reduce_mean(tf.reduce_sum(tf.square(ys-prediction),reduction_indices=[1]))"""训练"""
#优化算法,minimize(loss)以0.1的学习率对loss进行减小
train_step=tf.train.GradientDescentOptimizer(0.1).minimize(loss)init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)fig=plt.figure()#连续性的画图ax=fig.add_subplot(1,1,1)ax.scatter(x_data,y_data)# 不暂停plt.ion()# plt.show()绘制一次就会暂停# plt.show() #也可以用plt.show(block=False)来取消暂停,但是python3.5以后提供了ion的功能,更方便for i in range(1000):sess.run(train_step,feed_dict={xs:x_data,ys:y_data})if i%50==0:# print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))#尝试先抹除,后绘制第二条线#第一次没有线,会报错,try就会忽略错误,然后紧接着执行下面的步骤try:# 画出一条后抹除掉,去除第一个线段,但是只有一个,也就是抹除当前的线段ax.lines.remove(lines[0])except Exception:passprediction_value=sess.run(prediction,feed_dict={xs:x_data})lines=ax.plot(x_data,prediction_value,'r-',lw=5) #lw线宽# 暂停0.1splt.pause(0.1)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75

九、加速神经网络训练

网络越复杂,数据越多,参数越多,训练时间越长,但是往往为了解决复杂的问题,网络复杂度高不可避免,所以要使用某些方法使得网络运行更快。

1. 随机梯度下降

2. 在参数更新上优化

3. 学习率

十、优化器

是对学习率的改变

从初始的cost慢慢走到最小cost的过程

十一、可视化 Tensorboard

1. Tensorboard安装:

pip install tensorboard
  • 1

2. 编程获得logs文件夹下的可视化文件

3. 进入cmd,到保存文件的路径下

cd E:\python\mofan Tensorflow\logs
  • 1

4. 启动Tensorboard

Tensorboard --logdir=logs
  • 1

天呐,不知道哪天手残把系统变量的Path给删除了,整了一晚上安装Tensorboard都出错,终于发现了是Path的问题,以后还是乖乖的,啥也不敢删除了。

如何复制其中的内容?

1)右键上面的空白边,出现下面界面:

2)点击“标记”

3)选中,点击“Enter”,就复制了

 http://PC-20160519HGCD:6006
  • 1

最好使用google chrome打开网址,即可看到graphs。

十二、分类学习


28*28=784个数据点,也就是x输入的大小

总共0~9,也就是y输出的大小

代表3:

黑色格子表示为分类结果:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_datamnist=input_data.read_data_sets('MNIST_data',one_hot=True)def add_layer(inputs,in_size,out_size,activation_function=None):#Weights是一个矩阵,[行,列]为[in_size,out_size]Weights=tf.Variable(tf.random_normal([in_size,out_size]))#正态分布#初始值推荐不为0,所以加上0.1,一行,out_size列biases=tf.Variable(tf.zeros([1,out_size])+0.1)#Weights*x+b的初始化的值,也就是未激活的值Wx_plus_b=tf.matmul(inputs,Weights)+biases#激活if activation_function is None:#激活函数为None,也就是线性函数outputs=Wx_plus_belse:outputs=activation_function(Wx_plus_b)return outputsdef compute_accuracy(v_xs,v_ys):#全局变量global prediction#生成预测值,也就是概率,即每个数字的概率y_pre=sess.run(prediction,feed_dict={xs:v_xs})#对比预测的数据是否和真实值相等,对比位置是否相等,相等就对了correct_prediction=tf.equal(tf.arg_max(y_pre,1),tf.arg_max(v_ys,1))#计算多少个对,多少个错#tf.cast(x,dtype),将x数据转换为dtype类型accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))result=sess.run(accuracy,feed_dict={xs:v_xs,ys:v_ys})return result# define placeholder for inputs to networks
# 不规定有多少个sample,但是每个sample大小为784(28*28)
xs=tf.placeholder(tf.float32,[None,784])
ys=tf.placeholder(tf.float32,[None,10])#add output layer
prediction=add_layer(xs,784,10,activation_function=tf.nn.softmax)#the error between prediction and real data
cross_entropy=tf.reduce_mean(-tf.reduce_sum(ys*tf.log(prediction),reduction_indices=[1]))
train_strp=tf.train.GradientDescentOptimizer(0.5).minimize(cross_entropy)init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)for i in range(2000):batch_xs,batch_ys=mnist.train.next_batch(100)sess.run(train_strp,feed_dict={xs:batch_xs,ys:batch_ys})if i%50==0:print(compute_accuracy(mnist.test.images,mnist.test.labels))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59

结果:

0.1415
0.6516
0.751
0.7875
0.8115
0.8247
0.837
0.8403
0.8448
0.8532
0.8585
0.8594
0.8618
0.8631
0.8644
0.098
0.098
0.098
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

十三、过拟合

分类中的过拟合:

实际:

对十字形的新数据分类错误

解决方法:

1)增加数据量

过拟合的原因是模型复杂度和数据量不匹配,也就是数据量太小

当数据量增大时,红线被拉直,没有那么扭曲

2)正则化

WW变化太大,则让cost的变化也变大。

3)专门用于神经网络的训练方法:Dropout regularization

第一次训练:随机去掉神经网络节点和网络连接:

第二次训练:再次随机去掉一些参数

意义:每一次预测的结果都不会依赖于某部分特定的神经元,例如Regularization,当过度依赖某些WW的数值会很大,L1/L2会惩罚大的参数,而Dropout是从根本上不让其过度依赖某些神经元。

十四、Dropout解决over-fitting

黑色的线是理想的分割线,绿色的曲线就是过拟合的曲线,所以要避免让机器学习学到绿色的线

  • 第一条是直线拟合,没有很好的拟合效果,underfit
  • 第二条效果较好,just right
  • 第三条是过拟合,over-fitting

Tensorflow解决overfitting——dropout

Summary:所有需要在TensorBoard上展示的统计结果。
tf.name_scope():为Graph中的Tensor添加层级,TensorBoard会按照代码指定的层级进行展示,初始状态下只绘制最高层级的效果,点击后可展开层级看到下一层的细节。
tf.summary.scalar():添加标量统计结果。
tf.summary.histogram():添加任意shape的Tensor,统计这个Tensor的取值分布。
tf.summary.merge_all():添加一个操作,代表执行所有summary操作,这样可以避免人工执行每一个summary op。
tf.summary.FileWrite:用于将Summary写入磁盘,需要制定存储路径logdir,如果传递了Graph对象,则在Graph Visualization会显示Tensor Shape Information。执行summary op后,将返回结果传递给add_summary()方法即可。

未使用dropout:

import tensorflow as tf
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer#load data
digits=load_digits()
#0~9的图像
X=digits.data
#y是binary的,表示数字1,就在第二个位置放上1,其余都为0
y=digits.target
y=LabelBinarizer().fit_transform(y)
#切分
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=3)def add_layer(inputs,in_size,out_size,layer_name,activation_function=None):#Weights是一个矩阵,[行,列]为[in_size,out_size]Weights=tf.Variable(tf.random_normal([in_size,out_size]))#正态分布#初始值推荐不为0,所以加上0.1,一行,out_size列biases=tf.Variable(tf.zeros([1,out_size])+0.1)#Weights*x+b的初始化的值,也就是未激活的值Wx_plus_b=tf.matmul(inputs,Weights)+biases#激活if activation_function is None:#激活函数为None,也就是线性函数outputs=Wx_plus_belse:outputs=activation_function(Wx_plus_b)# 下面的表示outputs的值tf.summary.histogram(layer_name+'/outputs',outputs)return outputs#define placeholder for inputs to network
xs=tf.placeholder(tf.float32,[None,64])
ys=tf.placeholder(tf.float32,[None,10])#add output layer
# l1为隐藏层,为了更加看出overfitting,所以输出给了100
l1=add_layer(xs,64,100,'l1',activation_function=tf.nn.tanh)prediction=add_layer(l1,100,10,'l2',activation_function=tf.nn.softmax)#the error between prediction and real data
cross_entropy=tf.reduce_mean(-tf.reduce_sum(ys*tf.log(prediction),reduction_indices=[1]))
#添加标量统计结果
tf.summary.scalar('loss',cross_entropy)
train_step=tf.train.GradientDescentOptimizer(0.6).minimize(cross_entropy)init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)#添加一个操作,代表执行所有summary操作,这样可以避免人工执行每一个summary opmerged=tf.summary.merge_all()#summary writer goes in heretrain_writer=tf.summary.FileWriter("logs/train",sess.graph)#train为log的子文件夹test_writer=tf.summary.FileWriter("logs/test",sess.graph)for i in range(500):sess.run(train_step,feed_dict={xs:X_train,ys:y_train})if i%50==0:#record losstrain_result=sess.run(merged,feed_dict={xs:X_train,ys:y_train})test_result = sess.run(merged, feed_dict={xs: X_test, ys: y_test})train_writer.add_summary(train_result,i)test_writer.add_summary(test_result,i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69

红色:testdata

绿色:trainingdata

使用dropout:

train_result=sess.run(merged,feed_dict{xs:X_train,ys:y_train,keep_prob:1})时,也就是训练数据未使用dropout时,仍然有过拟合

train_result=sess.run(merged,feed_dict{xs:X_train,ys:y_train,keep_prob:0.5})时,两者拟合的很好


import tensorflow as tf
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import LabelBinarizer#load data
digits=load_digits()
#0~9的图像
X=digits.data
#y是binary的,表示数字1,就在第二个位置放上1,其余都为0
y=digits.target
y=LabelBinarizer().fit_transform(y)
#切分
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=3)def add_layer(inputs,in_size,out_size,layer_name,activation_function=None):#Weights是一个矩阵,[行,列]为[in_size,out_size]Weights=tf.Variable(tf.random_normal([in_size,out_size]))#正态分布#初始值推荐不为0,所以加上0.1,一行,out_size列biases=tf.Variable(tf.zeros([1,out_size])+0.1)#Weights*x+b的初始化的值,也就是未激活的值Wx_plus_b=tf.matmul(inputs,Weights)+biases#dropout 主功能,drop掉50%的结果,输出更新后的结果Wx_plus_b=tf.nn.dropout(Wx_plus_b,keep_prob)#激活if activation_function is None:#激活函数为None,也就是线性函数outputs=Wx_plus_belse:outputs=activation_function(Wx_plus_b)# 下面的表示outputs的值tf.summary.histogram(layer_name+'/outputs',outputs)return outputs#define placeholder for inputs to network
"""dropout"""
# 确定保留多少结果不被舍弃掉
keep_prob=tf.placeholder(tf.float32)xs=tf.placeholder(tf.float32,[None,64])
ys=tf.placeholder(tf.float32,[None,10])#add output layer
# l1为隐藏层,为了更加看出overfitting,所以输出给了100
l1=add_layer(xs,64,50,'l1',activation_function=tf.nn.tanh)prediction=add_layer(l1,50,10,'l2',activation_function=tf.nn.softmax)#the error between prediction and real data
cross_entropy=tf.reduce_mean(-tf.reduce_sum(ys*tf.log(prediction),reduction_indices=[1]))
#添加标量统计结果
tf.summary.scalar('loss',cross_entropy)
train_step=tf.train.GradientDescentOptimizer(0.6).minimize(cross_entropy)init=tf.global_variables_initializer()with tf.Session() as sess:sess.run(init)#添加一个操作,代表执行所有summary操作,这样可以避免人工执行每一个summary opmerged=tf.summary.merge_all()#summary writer goes in heretrain_writer=tf.summary.FileWriter("logs/train",sess.graph)#train为log的子文件夹test_writer=tf.summary.FileWriter("logs/test",sess.graph)for i in range(500):# drop掉60%,保持40%不被drop掉sess.run(train_step,feed_dict={xs:X_train,ys:y_train,keep_prob:0.4})if i%50==0:#record loss(不要drop掉任何东西,所以为1)train_result=sess.run(merged,feed_dict={xs:X_train,ys:y_train,keep_prob:0.5})test_result = sess.run(merged, feed_dict={xs: X_test, ys: y_test,keep_prob:1})train_writer.add_summary(train_result,i)test_writer.add_summary(test_result,i)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78

莫烦Tensorflow教程(1~14)(转)相关推荐

  1. 莫烦Tensorflow教程(15~22)

    十五.卷积神经网络 图像和语言方面结果突出 神经网络是由多层级联组成的,每层中包含很多神经元 卷积:神经网络不再是对每个像素做处理,而是对一小块区域的处理,这种做法加强了图像信息的连续性,使得神经网络 ...

  2. 莫烦python教程部分代码

    GitHub资源整理 莫烦python教程部分代码 莫烦python教程部分代码 整理了一部分莫烦Python教程中的代码,并对代码进行了详细的注释.由于莫烦大佬在做TensorFlow教程时使用的0 ...

  3. 莫烦tensorflow视频 和 LiYu's personal knowledge 和 sklearn

    莫烦 https://morvanzhou.github.io/tutorials/machine-learning/ RNN LSTM 循环神经网络 (分类例子) 作者: 莫烦 编辑: 莫烦 201 ...

  4. 莫烦python教程下载_Python 有哪些好的学习资料或者博客?

    Python是一门语法非常简单的语言,学习Python不需要花大量时间去学习它的语法,过一遍就行,主要靠实践.先给大家分享一个免费的Python的编程课,有Python的视频课程+代码实践课+辅导答疑 ...

  5. 莫烦python教程_python实现各种最优化算法

    python视频教程栏目介绍各种最优化算法 二分法 函数详见rres,此代码使该算法运行了两次def asdf(x): rres=8*x**3-2*x**2-7*x+3 return rres i=2 ...

  6. 莫烦python系列教程_莫烦python教程学习笔记——总结篇

    一.机器学习算法分类: 监督学习:提供数据和数据分类标签.--分类.回归 非监督学习:只提供数据,不提供标签. 半监督学习 强化学习:尝试各种手段,自己去适应环境和规则.总结经验利用反馈,不断提高算法 ...

  7. 永恒python强化材料_强化学习 Reinforcement Learning (莫烦 Python 教程)

    https://www.bilibili.com/video/BV13W411Y75P?p=9 Q-Learning 说到不一定做到 Sarsa:说到做到 Q-learning 是一个更勇敢的算法 q ...

  8. tensorflow学习笔记-bili莫烦

    bilibili莫烦tensorflow视频教程学习笔记 1.初次使用Tensorflow实现一元线性回归 # 屏蔽警告 import os os.environ['TF_CPP_MIN_LOG_LE ...

  9. 莫烦---Pytorch学习

    今天翻翻资料,发现有些地方的说明不太到位,修改过来了. Will Yip 2020.7.29 莫烦大神Pytorch -->> 学习视频地址 2020年开年就遇上疫情,还不能上学,有够难受 ...

最新文章

  1. LeetCode 3. 无重复字符的最长子串(Longest Substring Without Repeating Characters)
  2. 【随机共振】基于随机共振的高频弱信号检测的MATLAB仿真
  3. Android Studio签名打包的两种方式
  4. 直播电商加速合规,引爆消费潜力
  5. Redis操作命令总结
  6. 【linux】截断日志文件
  7. JMeter定制功能实现
  8. 设计模式学习(三)——单例模式
  9. python多进程间通信_Python 多进程编程之 进程间的通信(Queue)
  10. java实现点卡生成
  11. Linux抓包(wireshark+tcpdump)
  12. linux刷新本地dns命令_如何在Linux上刷新DNS缓存
  13. MyEclipse集成SVN插件subclipse
  14. linux文件系统 ext3,Linux环境中使用Ext3文件系统
  15. Windows2000下IE5升级到IE6
  16. linux防挂马软件,Linux利用Python脚本检测网站挂马程序
  17. 数据库服务器的打开方式
  18. 强化学习开发黑白棋、五子棋游戏
  19. LabelImage 安装过程
  20. IEEE Conference Template Letter

热门文章

  1. Android 开发之 bindService() 通信
  2. pytorch 入门学习反向传播-4
  3. java泛型,“参数化参数”的基本理解
  4. Quart 2D (DrawText)
  5. ConcurrentHashMap与HashTable的区别
  6. Ubuntu Server最佳方案——LAMP服务器之PHP篇
  7. 双击背面截图_如何通过点击iPhone背面快速截图,只需一个简单设置
  8. javascript继承的原理
  9. Ubuntu 下 svn 服务器的安装配置
  10. mysql——逗号分割字段情况