anacoda

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

http://friskit.me/2015/06/29/keras-mnist/

问题

因为训练集的图片都是黑底白字,所以自己写的也应该是黑底白字!

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/

机器学习拟合高次函数

https://blog.csdn.net/cymy001/article/details/78647933

你可能感兴趣的:(anacoda)