conda create -n tensorflow python=3.5 现在可以支持3.6
所以
· 首先创建一个tensorflow的environment
· tensorflow这个包内 运行conda list发现很多东西都没有 所以在包内再次安装
'''install anaconda'''
镜像https://mirrors6.tuna.tsinghua.edu.cn/
解决keras的mnist没法加载数据集的问题 因为网络
从网上找镜像下载 放到本地目录 在load方法里修改path为本地路径 取消MD5检验
或者
在mnist_方法里加入load方法里的语句 直接处理本地文件
https://blog.csdn.net/sunyangwei1993/article/details/73998297
Try
问题
因为训练集的图片都是黑底白字,所以自己写的也应该是黑底白字!
https://blog.csdn.net/Sparta_117/article/details/66965760
TensorFlow™ 是一个采用数据流图,用于数值计算的开源软件库。它是一个不严格的“神经网络”库,可以利用它提供的模块搭建大多数类型的神经网络。
MNIST是一个巨大的手写数字数据集,被广泛应用于机器学习识别领域。MNIST有60000张训练集数据和10000张测试集数据,每一个训练元素都是28*28像素的手写数字图片。作为一个常见的数据集,MNIST经常被用来测试神经网络,也是比较基本的应用。
过滤器,即卷积核
便可得到这一部分的特征值,即图中的卷积特征。
下面我们就要对它进行预处理,缩小它的大小为28*28像素,并转变为灰度图,进行二值化处理。我使用的是Opencv对图像进行处理,
权重初始化init方法为normal,激活函数activation的类型为relu。输出层具有10个神经元,权重初始化方法为normal,激活函数的类型为softmax。我们选择的损失函数loss类型为categorical_crossentropy,即 Logarithmic 损失函数,优化方式类型选用的是adam,即 ADAM 梯度下降算法。
model.predict_proba 和 model.predict_classes
https://stackoverflow.com/questions/43963435/keras-predict-proba-predict-and-predict-classes-issues
"""
def predict_proba(self, x, batch_size=None, verbose=0, steps=None):
"""Generates class probability predictions for the input samples.
The input samples are processed batch by batch.
# Arguments
x: input data, as a Numpy array or list of Numpy arrays
(if the model has multiple inputs).
batch_size: Integer. If unspecified, it will default to 32.
verbose: verbosity mode, 0 or 1.
steps: Total number of steps (batches of samples)
before declaring the prediction round finished.
Ignored with the default value of `None`.
# Returns
A Numpy array of probability predictions.
"""
preds = self.predict(x, batch_size, verbose, steps=steps)
if preds.min() < 0. or preds.max() > 1.:
warnings.warn('Network returning invalid probability values. '
'The last layer might not normalize predictions '
'into probabilities '
'(like softmax or sigmoid would).')
return preds
def predict_classes(self, x, batch_size=None, verbose=0, steps=None):
"""Generate class predictions for the input samples.
The input samples are processed batch by batch.
# Arguments
x: input data, as a Numpy array or list of Numpy arrays
(if the model has multiple inputs).
batch_size: Integer. If unspecified, it will default to 32.
verbose: verbosity mode, 0 or 1.
steps: Total number of steps (batches of samples)
before declaring the prediction round finished.
Ignored with the default value of `None`.
# Returns
A numpy array of class predictions.
"""
proba = self.predict(x, batch_size=batch_size, verbose=verbose,
steps=steps)
if proba.shape[-1] > 1:
return proba.argmax(axis=-1)
else:
return (proba > 0.5).astype('int32')
"""
classes的代码中有'''
if proba.shape[-1] > 1:
return proba.argmax(axis=-1)
else:
return (proba > 0.5).astype('int32')
'''
其中proba是numpy下的list,shape返回每一维的大小。
这里程序运行的时候classes返回的数据都是1,也就是这里的原因。所以要搞清楚的是proba.shape[-1]<=1代表什么?
从数组的角度,shape[-1]代表的是数组的最后一个值,在这里也就是proba中最后一维数据的大小,<=1即代表没有数据或者只有一个数据。
那么,proba的数据是什么?
A Numpy array of predictions.
目前的思路:
由于在classes的方法内部,要判断predict返回的数组最后一维的数据是不是多于1个。而在拟合一次函数的程序中,神经网络的输出的确是一维输出,所以产生的效果是只返回了1.
梯度爆炸
https://www.jianshu.com/p/9018d08773e6
学习率 参数 损失函数
损失函数和激活函数的选择
https://blog.csdn.net/Mbx8X9u/article/details/78140236
http://www.csuldw.com/2016/03/26/2016-03-26-loss-function/