小编Fab*_*ian的帖子

__file__在Jupyter Notebook中不存在

我在使用Python 3.4.2 的Jupyter Notebook服务器(v4.2.2)上,我想使用全局名称__file__,因为笔记本将从其他用户克隆,并且我必须运行一个部分:

def __init__(self, trainingSamplesFolder='samples', maskFolder='masks'):
    self.trainingSamplesFolder = self.__getAbsPath(trainingSamplesFolder)
    self.maskFolder = self.__getAbsPath(maskFolder)

def __getAbsPath(self, path):
    if os.path.isabs(path):
        return path
    else:
        return os.path.join(os.path.dirname(__file__), path)
Run Code Online (Sandbox Code Playgroud)

__getAbsPath(self, path)检查是否一个path参数是相对或绝对路径和返回的绝对版本path.所以我可以path稍后安全地使用.

但是我得到了错误

NameError:'__file__'未定义名称

我在网上搜索了这个错误并找到了我应该更好地使用的"解决方案" sys.argv[0],但是print(sys.argv[0])返回了

/usr/local/lib/python3.4/dist-packages/ipykernel/__main__.py

但正确的笔记本位置应该是/home/ubuntu/notebooks/.

感谢您的参考如何从Martijn Pieters 获取当前的IPython Notebook名称(评论),最后的答案(不接受)非常适合我的需求:

print(os.getcwd())

/家庭/ Ubuntu的电脑/笔记本电脑

path python-3.x jupyter

52
推荐指数
4
解决办法
2万
查看次数

从hdfs读取ocr文件后,令人难以置信的火花数据帧

我在使用Ambari上的spark 2.1.1和hadoop 2.6时遇到了问题.我首先在本地计算机上测试了我的代码(单节点,本地文件),一切都按预期工作:

from pyspark.sql import SparkSession

spark = SparkSession\
    .builder\
    .master('yarn')\
    .appName('localTest')\
    .getOrCreate()

data = spark.read.format('orc').load('mydata/*.orc')
data.select('colname').na.drop().describe(['colname']).show()

+-------+------------------+
|summary| colname          |
+-------+------------------+
|  count|           1688264|
|   mean|17.963293650793652|
| stddev|5.9136724822401425|
|    min|               0.5|
|    max|              87.5|
+-------+------------------+
Run Code Online (Sandbox Code Playgroud)

这些价值观似乎是合理的.

现在我将我的数据上传到hadoop集群(ambari setup,yarn,11个节点)并将其推送到hdfs使用 hadoop fs -put /home/username/mydata /mydata

现在我测试了与下表结尾的相同代码:

from pyspark.sql import SparkSession

spark = SparkSession\
    .builder\
    .master('yarn')\
    .appName('localTest')\
    .getOrCreate()

data = spark.read.format('orc').load('hdfs:///mydata/*.orc')
data.select('colname').na.drop().describe(['colname']).show()

+-------+------------------+
|summary| colname          |
+-------+------------------+
|  count|           2246009|
|   mean|1525.5387403802445|
| stddev|16250.611372902456|
|    min|         -413050.0|
|    max|       1.6385821E7|
+-------+------------------+ …
Run Code Online (Sandbox Code Playgroud)

hadoop hdfs hadoop-yarn apache-spark pyspark

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

使用"Flatten"或"Reshape"在keras中获得未知输入形状的1D输出

我想使用keras层Flatten()Reshape((-1,))在模型的末尾输出一维矢量[0,0,1,0,0, ... ,0,0,1,0].

可悲的是,由于我未知的输入形状存在问题:
input_shape=(4, None, 1))).

所以通常输入形状介于两者之间[batch_size, 4, 64, 1],[batch_size, 4, 256, 1]输出应该是batch_size x未知维度(对于上面的第一个例子:[batch_size, 64]和对于secound [batch_size, 256]).

我的模型看起来像:

model = Sequential()
model.add(Convolution2D(32, (4, 32), padding='same', input_shape=(4, None, 1)))
model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Convolution2D(1, (1, 2), strides=(4, 1), padding='same'))
model.add(Activation('sigmoid'))
# model.add(Reshape((-1,))) produces the error
# int() argument must be a string, a bytes-like object or a number, not 'NoneType' 
model.compile(loss='binary_crossentropy', optimizer='adadelta')
Run Code Online (Sandbox Code Playgroud)

所以我当前的输出形状是[batchsize,1,unknown dimension,1].例如,这不允许我使用class_weights …

python keras tensorflow keras-2

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

计算灵敏度和特异性的 Pythonic 方法

我想计算 2 个 numpy 数组(测试、真值)的敏感性和特异性。两个数组具有相同的形状并且仅存储数字 0(测试/真假)、1(测试/真假)。因此,我必须计算 false_positives、true_positives、false_negative 和 true_negative 值。我是这样做的:

true_positive = 0
false_positive = 0
false_negative = 0
true_negative = 0

for y in range(mask.shape[0]):
    for x in range(mask.shape[1]):
        if (mask[y,x] == 255 and truth[y,x] == 255):
            true_positive = true_positive + 1
        elif (mask[y,x] == 255 and truth[y,x] == 0):
            false_positive = false_positive + 1
        elif (mask[y,x] == 0 and truth[y,x] == 255):
            false_negative = false_negative + 1
        elif (mask[y,x] == 0 and truth[y,x] == 0):
            true_negative = true_negative …
Run Code Online (Sandbox Code Playgroud)

python numpy

3
推荐指数
1
解决办法
3720
查看次数

如何正确使用tf.nn.max_pool_with_argmax

目前我用张量流来玩一点,以便更好地理解机器学习张量流本身.因此,我想想象张量流的方法(尽可能多).为了可视化max_pool,我加载了一个图像并执行该方法.之后我显示了两个:输入和输出图像.

import tensorflow as tf
import cv2
import numpy as np

import matplotlib.pyplot as plt

image = cv2.imread('lena.png')
image_tensor = tf.expand_dims(tf.Variable(image, dtype=tf.float32), 0)

#output, argmax = tf.nn.max_pool_with_argmax(image_tensor, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME', name='pool1')
output = tf.nn.max_pool(image_tensor, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='SAME', name='pool1')

init = tf.initialize_all_variables()
session = tf.Session()
session.run(init)

output = session.run(output)

session.close()

image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
plt.figure()
plt.imshow(image)
plt.show()

output = cv2.cvtColor(output[0], cv2.COLOR_RGB2BGR)
plt.figure()
plt.imshow(255-output)
plt.show() 
Run Code Online (Sandbox Code Playgroud)

一切正常,我得到这个输出(如预期的那样)

图像(输入) 在此输入图像描述

现在我想测试方法tf.nn.max_pool_with_argmax以获得池化操作的argmax.但如果我取消注释该行

output, …

python tensorflow

2
推荐指数
1
解决办法
3497
查看次数