小编kaw*_*vin的帖子

如何包装一个异步方法,该方法接受一个块并在目标c中将其转换为同步

我想包装一个如下所示的异步API:

[someObject completeTaskWithCompletionHandler:^(NSString *result) {

}];
Run Code Online (Sandbox Code Playgroud)

进入一个我可以像这样调用的同步方法

NSString *result = [someObject completeTaskSynchronously];
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?我做了一些文档阅读和谷歌搜索,并尝试使用"dispatch_semaphore"尝试实现它,如下所示:

-(NSString *) completeTaskSynchronously {
   __block NSString *returnResult;
   self.semaphore = dispatch_semaphore_create(0);  
   [self completeTaskWithCompletionHandler:^(NSString *result) {
       resultResult = result;
       dispatch_semaphore_signal(self.semaphore);
   }];

   dispatch_semaphore_wait(self.semaphore, DISPATCH_TIME_FOREVER);
   return resultResult;
}
Run Code Online (Sandbox Code Playgroud)

但这似乎没有用,它基本上只是停在dispatch_semaphore_wait.执行永远不会到达执行_signal的内部块.任何人都有关于如何做到这一点的代码示例?我怀疑该块必须在主线程的其他线程上?此外,假设我无法访问异步方法背后的源代码.谢谢!

multithreading asynchronous objective-c grand-central-dispatch ios

12
推荐指数
3
解决办法
4333
查看次数

xcrun swift在命令行上生成<unknown>:0:错误:无法加载共享库

我的目标是尝试像脚本一样运行我的Swift程序.如果整个程序是自包含的,你可以运行它:

% xcrun swift hello.swift
Run Code Online (Sandbox Code Playgroud)

hello.swift在哪里

import Cocoa
println("hello")
Run Code Online (Sandbox Code Playgroud)

但是,我想超越一步,包括swift模块,我可以导入其他类,函数等.

所以我们假设我们想要在GoodClass.swift中使用一个非常好的类

public class GoodClass {
    public init() {}
    public func sayHello() {
        println("hello")
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在想把这个好东西导入我的hello.swift:

import Cocoa
import GoodClass

let myGoodClass = GoodClass()
myGoodClass.sayHello()
Run Code Online (Sandbox Code Playgroud)

我首先通过运行以下命令生成.o,lib <>.a,.swiftmodule:

% xcrun swiftc -emit-library -emit-object GoodClass.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name GoodClass
% ar rcs libGoodClass.a GoodClass.o
% xcrun swiftc -emit-module GoodClass.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name GoodClass
Run Code Online (Sandbox Code Playgroud)

最后,我准备运行我的hello.swift(好像它是一个脚本):

% xcrun swift -I "./" -L "./" -lGoodClass -sdk $(xcrun --show-sdk-path --sdk …
Run Code Online (Sandbox Code Playgroud)

module xcrun swift

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

SQLAlchemy/MySQL 在查询过程中与 MySQL 服务器的连接丢失

SQLAlchemy (0.9.8) 和 mysql-5.6.21-osx10.8-x86_64 和 MAC OS X 10.3.3 (Yosemite)

我一直断断续续:

InterfaceError: (InterfaceError) 2013: Lost connection to MySQL server during query u'SELECT..... '
Run Code Online (Sandbox Code Playgroud)

我已经阅读了一些线程,大多数情况通过将其添加到 my.cnf 来解决

   max_allowed_packet = 1024M
Run Code Online (Sandbox Code Playgroud)

这对于我尝试做的事情来说应该足够大了。这样做后,我间歇性地踩它。并将这一行放在 /etc/my.cnf 中:

   log-error = "/Users/<myname>/tmp/mysql.err.log"
   log-warnings = 3
Run Code Online (Sandbox Code Playgroud)

我希望获得更多详细信息,但我所看到的只是这样的:

   [Warning] Aborted connection 444 to db: 'dbname' user: 'root' host: 'localhost' (Got an error reading communication packets)
Run Code Online (Sandbox Code Playgroud)

我已经到了我认为更多细节更好的日志记录可能会有所帮助的地步,或者如果在此之前我可以尝试其他一些事情。

谢谢。

python mysql macos sqlalchemy

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

运行任何单元格的 Google Colab 收到与 JavaScript 相关的错误

在执行任何单元格时收到一个浏览器白色弹出窗口:

Error
Could not load the JavaScript files needed to display output.
This is probably because your Google account login access has expired or because third-party cookies are not allowed by your browser.

Please reload this page.
 DETAILS
Run Code Online (Sandbox Code Playgroud)

我试过重新登录并重新启动运行时,但没有帮助。奇怪的是,另一个笔记本是好的。

好的在此处输入图片说明

更新:只需重新启动浏览器并重新启动一切似乎都可以“解决”这个问题。

google-colaboratory

7
推荐指数
2
解决办法
6789
查看次数

如何为 GCP AI Platform Notebook 更新 Jupyter Lab 版本

我前段时间创建了一个 GCP AI Platform Notebook 实例,对于我尝试安装的许多扩展,版本似乎太低了。我做了一个pip install upgrade jupyterlab并重新启动了虚拟机实例。当我点击 时OPEN JUPYTERLAB,我发现更新没有生效。

这样做的正确方法是什么?

google-cloud-platform jupyter-lab gcp-ai-platform-notebook

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

如何在 google Colab 上关闭和停止 jupyter notebook

如果我完成了在 google colab 上创建的 jupyter 笔记本,并且该笔记本已通过 GPU 连接到其中一个环境,我该如何关闭并停止它?在本地,我过去常常通过单击“文件”>“关闭并暂停”来执行此操作。我只是想考虑使用这个伟大而免费的计算资源。

jupyter-notebook google-colaboratory

6
推荐指数
1
解决办法
2886
查看次数

使用 tf.keras.utils.Sequence 和 model.fit_generator with use_multiprocessing=True 生成警告

这是我收到的警告:

WARNING:tensorflow:multiprocessing can interact badly with TensorFlow, causing nondeterministic deadlocks. For high performance data pipelines tf.data is recommended.
Run Code Online (Sandbox Code Playgroud)

我写的 Sequence 子类严格执行加载和读取 I/O jpg 文件。我想只要没有 2 个线程在同一个文件上同时执行,事情应该没问题。

我训练了几个 epoch,到目前为止,没有错误。但是如果有可能发生的潜在不好的事情,我想获得反馈。

python multiprocessing tensorflow tf.keras

6
推荐指数
1
解决办法
4777
查看次数

iPad Chrome Google Colab 笔记本如何摆脱单元格中的键盘图标

使用 iPad Pro 2020 和 google chrome 应用程序(使用桌面网站),Colab 笔记本的每个单元格上都有一个又大又胖的键盘图标。如何摆脱它?我有一个 iPad 的硬件键盘,绝对不需要那个图标,它浪费了宝贵的空间。看截图

\n\n

在此输入图像描述

\n

google-chrome ipad google-chrome-app google-colaboratory ipados

5
推荐指数
0
解决办法
1750
查看次数

tf keras SparseCategoricalCrossentropy 和 sparse_categorical_accuracy 在训练期间报告错误值

这是 tf 2.3.0。在训练期间, SparseCategoricalCrossentropy loss 和 sparse_categorical_accuracy 的报告值似乎还差得很远。我查看了我的代码,但还没有发现任何错误。这是要重现的代码:

import numpy as np
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense

x = np.random.randint(0, 255, size=(64, 224, 224, 3)).astype('float32')
y = np.random.randint(0, 3, (64, 1)).astype('int32')

ds = tf.data.Dataset.from_tensor_slices((x, y)).batch(32)

def create_model():
  input_layer = tf.keras.layers.Input(shape=(224, 224, 3), name='img_input')
  x = tf.keras.layers.experimental.preprocessing.Rescaling(1./255, name='rescale_1_over_255')(input_layer)

  base_model = tf.keras.applications.ResNet50(input_tensor=x, weights='imagenet', include_top=False)

  x = tf.keras.layers.GlobalAveragePooling2D(name='global_avg_pool_2d')(base_model.output)

  output = Dense(3, activation='softmax', name='predictions')(x)

  return tf.keras.models.Model(inputs=input_layer, outputs=output)

model = create_model()

model.compile(
  optimizer=tf.keras.optimizers.Adam(learning_rate=1e-4),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(), 
  metrics=['sparse_categorical_accuracy']
)

model.fit(ds, steps_per_epoch=2, …
Run Code Online (Sandbox Code Playgroud)

keras tensorflow cross-entropy

5
推荐指数
1
解决办法
542
查看次数

如何在 google colab 上创建一个 swift notebook

我在 Swift for Tensorflow 的开发峰会上看到了一些不错的演示。所以想试试这个。

我可以打开这个笔记本:

https://github.com/tensorflow/swift/blob/master/docs/site/tutorials/custom_differentiation.ipynb

如果您查看 nb 运行时设置,运行时类型下拉列表会显示“ Swift ”。

在此处输入图片说明

但是,我无法在 colab 菜单中的任何地方找到如何从头开始快速创建笔记本。

swift tensorflow google-colaboratory swift-for-tensorflow

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

tf.keras 如何保存 ModelCheckPoint 对象

ModelCheckpoint 可用于保存基于特定监控指标的最佳模型。因此,它显然具有有关存储在其对象中的最佳指标的信息。例如,如果您在 google colab 上训练,您的实例可能会在没有警告的情况下被杀死,并且在长时间的训练后您将丢失此信息。

我试图腌制 ModelCheckpoint 对象,但得到:

TypeError: can't pickle _thread.lock objects  
Run Code Online (Sandbox Code Playgroud)

这样当我带回我的笔记本时,我可以重复使用这个相同的对象。有没有好的方法可以做到这一点?您可以尝试通过以下方式重现:

chkpt_cb = tf.keras.callbacks.ModelCheckpoint('model.{epoch:02d}-{val_loss:.4f}.h5',
                                              monitor='val_loss',
                                              verbose=1,
                                              save_best_only=True)

with open('chkpt_cb.pickle', 'w') as f:
  pickle.dump(chkpt_cb, f, protocol=pickle.HIGHEST_PROTOCOL)
Run Code Online (Sandbox Code Playgroud)

callback pickle keras google-colaboratory tf.keras

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

TF 2.3.0 使用带有样本权重的 tf 数据集训练 keras 模型不适用于指标

我将 sample_weight 作为 tf.data.Dataset 中的第三个元组传递(在掩码的上下文中使用它,所以我的 sample_weight 要么是 0,要么是 1。问题是这个 sample_weight 似乎没有应用于度量计算.(参考:https : //www.tensorflow.org/guide/keras/train_and_evaluate#sample_weights

这是代码片段:

train_ds = tf.data.Dataset.from_tensor_slices((imgs, labels, masks))
train_ds = train_ds.shuffle(1024).repeat().batch(32).prefetch(buffer_size=AUTO)

model.compile(optimizer = Adam(learning_rate=1e-4),
             loss = SparseCategoricalCrossentropy(),
             metrics = ['sparse_categorical_accuracy'])

model.fit(train_ds, steps_per_epoch = len(imgs)//32, epochs = 20)
Run Code Online (Sandbox Code Playgroud)

训练后的损失非常接近于零,但 sparse_categorical_accuracy 不是(大约 0.89)。因此,我高度怀疑为构建 tf.dataset 传入的任何 sample_weight(掩码)都不会在训练期间报告指标时应用,而损失似乎是正确的。我通过对未单独屏蔽的子集运行预测进一步确认,并确认准确度为 1.0

另外,根据文档:

https://www.tensorflow.org/api_docs/python/tf/keras/metrics/SparseCategoricalAccuracy

该指标有 3 个参数:y_true、y_pred、sample_weight

那么如何在度量计算期间传递 sample_weight 呢?这是 keras 框架内 model.fit(...) 的责任吗?到目前为止,我找不到任何谷歌搜索的例子。

metrics keras tensorflow

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