我在使用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的电脑/笔记本电脑
我在使用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) 我想使用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 …
我想计算 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) 目前我用张量流来玩一点,以便更好地理解机器学习张量流本身.因此,我想想象张量流的方法(尽可能多).为了可视化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 ×3
tensorflow ×2
apache-spark ×1
hadoop ×1
hadoop-yarn ×1
hdfs ×1
jupyter ×1
keras ×1
keras-2 ×1
numpy ×1
path ×1
pyspark ×1
python-3.x ×1