小编Jam*_*mes的帖子

神经网络(无隐藏层)与Logistic回归?

我一直在上神经网络课,并不真正理解为什么我从逻辑回归和两层神经网络(输入层和输出层)的准确度得分得到不同的结果.输出层使用sigmoid激活功能.根据我的学习,我们可以使用神经网络中的sigmoid激活函数来计算概率.如果与逻辑回归试图完成的内容完全相同,这应该非常相似.然后从那里backpropogate使用梯度下降最小化错误.可能有一个简单的解释,但我不明白为什么准确性得分变化如此之大.在这个例子中,我没有使用任何训练或测试集,只是简单的数据来演示我不理解的东西.

逻辑回归的准确率为71.4%.在下面的例子中,我刚刚为'X'和结果'y'数组创建了数字.当结果等于'1'时,我故意使'X'的数字更高,以便线性分类器可以具有一定的准确性.

import numpy as np
from sklearn.linear_model import LogisticRegression
X = np.array([[200, 100], [320, 90], [150, 60], [170, 20], [169, 75], [190, 65], [212, 132]])
y = np.array([[1], [1], [0], [0], [0], [0], [1]])

clf = LogisticRegression()
clf.fit(X,y)
clf.score(X,y) ##This results in a 71.4% accuracy score for logistic regression
Run Code Online (Sandbox Code Playgroud)

然而,当我实现一个没有隐藏层的神经网络时,只需对单节点输出层使用sigmoid激活函数(因此总共有两层,输入和输出层).我的准确率分数约为42.9%?为什么这与逻辑回归准确度得分显着不同?为什么这么低?

import keras
from keras.models import Sequential
from keras.utils.np_utils import to_categorical
from keras.layers import Dense, Dropout, Activation

model = Sequential()

#Create a neural network with 2 input nodes for the …
Run Code Online (Sandbox Code Playgroud)

python machine-learning neural-network logistic-regression keras

7
推荐指数
1
解决办法
2530
查看次数

将Pandas列转换为Keras神经网络的Numpy数组

我正在学习如何创建CNN模型,并认为Kaggle举办了一场有趣的比赛来帮助我学习它.

他们提供了一个类似JSON的大型(BSON)文件,大约50GB,我正在尝试处理它.我正在尝试使用Keras模块训练卷积神经网络.在文件中,我迭代地读取具有(180,180,3)的阵列结构的图像数据.整个文件包含大约7,000,000个图像,因此最终的数组结构看起来像(7000000,180,180,3).但是,我无法将所有这些数据读入内存,所以我的目标是一次读取100,000个图像以适应神经网络,保存模型的权重,删除数组以释放内存,然后继续阅读接下来将100,000个图像放入新阵列中以重新拟合先前训练的模型.我会迭代地这样做,直到我到达最后一张图片.

我最初尝试使用'np.append()'来迭代地将每个图像阵列附加在一起,但是,这花了很多时间,因为我只通过25,000个图像,导致阵列结构(25000,180,180, 3),在10个小时内,由于尺寸的原因,它在接近结束时非常慢.

然后,我尝试使用pandas数据帧结构使用不同的方法.我将每个(1,180,180,3)阵列附加到每个单元格中.我能够使用这种方法在大约20分钟内迭代100,000张图像(大部分代码都是通过Kaggle提供的 - https://www.kaggle.com/inversion/processing-bson-files)但我在下面进行了修改:

# Simple data processing
from bson.json_util import dumps
data = bson.decode_file_iter(open('train.bson', 'rb'))

prod_to_category = dict()

i = 0
j = 1000

# Loop through dataset
for c, d in enumerate(data):
    product_id = d['_id']
    category_id = d['category_id'] # This won't be in Test data
    prod_to_category[product_id] = category_id
    i+=1

    # Create a counter to check how many records have been iterated through
    if (i == 1):
        print (i, "records loaded")
        print(picture_1.shape)
        j+=1000
    for e, …
Run Code Online (Sandbox Code Playgroud)

python numpy neural-network pandas keras

4
推荐指数
1
解决办法
1964
查看次数