在查看新的CoreML API时,我看不到在生成.mlmodel并将其捆绑到您的应用程序后继续训练模型的任何方法.这让我觉得我无法对用户的内容或动作进行机器学习,因为模型必须事先经过完全训练.
发货后有没有办法将训练数据添加到我训练过的模型中?
编辑:我刚刚注意到你可以从URL初始化生成的模型类,所以也许我可以将新的训练数据发布到我的服务器,重新生成训练模型并将其下载到应用程序中?似乎它会起作用,但这完全打败了在没有用户数据离开设备的情况下能够使用ML的隐私方面.
在我的应用程序中,我能够清除数据库中的所有数据.完成此操作后,将解析捆绑的JSON,然后将其保存到数据库(以便将数据库返回到默认状态).解析和保存此JSON的操作在任何情况下都可以正常工作,除非在清除并重新创建持久性存储之后,在这种情况下我得到'NSInvalidArgumentException',原因:'无法从此NSManagedObjectContext的协调器访问对象的持久存储'.在保存在后台上下文中后尝试在主线程上下文中调用mergeChangesFromContextDidSaveNotification时抛出此异常.
重新创建存储是在主线程上执行的,因为解析和保存总是在后台线程上进行.这是我的托管对象上下文的getter,以确保线程安全:
- (NSManagedObjectContext *)managedObjectContext {
NSMutableDictionary *threadDictionary = [[NSThread currentThread] threadDictionary];
NSManagedObjectContext *threadContext = threadDictionary[ckCoreDataThreadKey];
if (!threadContext) {
threadContext = [self newManagedObjectContext];
threadDictionary[ckCoreDataThreadKey] = threadContext;
}
return threadContext;
}
Run Code Online (Sandbox Code Playgroud)
newManagedObjectContext方法为所有新实例提供相同的NSPersistentStoreCoordinator对象.
以下是用于清除存储的代码(始终在主线程上执行):
[self.managedObjectContext lock];
[self.managedObjectContext reset]; //to drop pending changes
//delete the store from the current managedObjectContext
if ([[self.managedObjectContext persistentStoreCoordinator] removePersistentStore:[[[self.managedObjectContext persistentStoreCoordinator] persistentStores] lastObject] error:error]) {
[[NSFileManager defaultManager] removeItemAtURL:storeURL error:error];
[[self.managedObjectContext persistentStoreCoordinator] addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:error]; //recreates the persistent store
[self addSkipBackupAttributeToItemAtURL:storeURL];
}
[self.managedObjectContext unlock];
Run Code Online (Sandbox Code Playgroud)
奇怪的是,这个相同的代码在其他项目中运行良好,除了数据内容之外没有其他区别.任何帮助是极大的赞赏!
尝试在Android上使用自定义令牌登录Firebase大约需要30秒才能完成。这不是网络问题,因为调用服务器以在很短的时间内返回自定义令牌。每个Firebase库都使用最新的10.0.1版本。以下是相关代码:
String customToken = //retrieved from server
firebaseAuth.signInWithCustomToken(customToken).addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
//30 seconds later, task is successful
}).addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
Log.d("error", "failed to sign in with custom token " + e.getLocalizedMessage());
}
});
Run Code Online (Sandbox Code Playgroud)
我知道自定义令牌是有效的,因为该操作最终会成功,但挂30秒钟或更长时间后不会成功。不用说,这种性能在生产应用程序中是不可接受的。
我想编写一个Swift协议,它需要一个类型来指定一个基类,并实现对该基类的子类进行操作的方法.这可能是什么样的(不编译):
protocol Repository {
associatedtype BaseModel
//T must subclass BaseModel
func all<T: BaseModel>(from type: T.Type) -> [T]
}
Run Code Online (Sandbox Code Playgroud)
但是这会生成以下编译器错误:
Inheritance from non-protocol, non-class type 'Self.BaseModel'
这是有道理的,因为BaseModel可以用结构类型指定,并且不允许子类化.所以我尝试创建一个空的协议,约束类,尝试通知编译器这种类型将是类类型并允许子类约束.
protocol Model: class { }
然后我使用Model类协议约束BaseModel类型:
associatedtype BaseModel: Model
但是这会从上面生成相同的编译器错误.是否可以从associatedtype协议上强制执行子类约束?我希望上面的编译或Swift允许类似下面的内容允许子类约束:
associatedtype BaseModel: class
我正在尝试为apple-touch-icon我的head标签中的每个尺寸提供图像。我这样做:
// not shown: import all image files: logo57, logo76, etc
<link rel="apple-touch-icon" sizes="57x57" href={logo57} />
<link rel="apple-touch-icon" sizes="76x76" href={logo76} />
<link rel="apple-touch-icon" sizes="120x120" href={logo120} />
<link rel="apple-touch-icon" sizes="152x152" href={logo152} />
<link rel="apple-touch-icon" sizes="167x167" href={logo167} />
<link rel="apple-touch-icon" sizes="180x180" href={logo180} />
Run Code Online (Sandbox Code Playgroud)
问题在于,当页面呈现时,所有这些图像都直接包含在页面中作为数据 URI 中的 base 64,而不是相对 url。像这样:
<link rel="apple-touch-icon" sizes="180x180" href="data:image/png;base64,iVBORw0KGgoAAAA....">
Run Code Online (Sandbox Code Playgroud)
这是有问题的,原因有几个。一方面,这些图像仅在渐进式 Web 应用程序场景中需要;普通桌面浏览器不需要它们,但桌面浏览器被迫下载所有这些 base 64 块,从而减慢了页面加载速度。其次,即使在 PWA 场景中,每个设备也只需要这些图像中的一个,而不是全部,因此页面加载时间也会减慢。
这是对小于 10,000 字节的图像的记录优化,因此它们都在这里加载可能是微不足道的差异。但是,原始 png 的总大小总计约 27kb(转换为 base 64 后我不知道),如果不需要,我似乎宁愿不将这些数据包含在每个页面中。
我发现我可以将所有图像移动到 /static 文件夹并使用 引用它们href="logo57.png",但是随后我失去了编译时验证,这些图像实际上存在于给定的 href 中,以及包含图像哈希在文件名中(出于缓存原因)。 …
apple-touch-icon data-uri webpack progressive-web-apps gatsby
正如标题状态,LLDB报告的值UInt.max是一个UInt的-1,这似乎不合逻辑的高度.考虑到let uint: UInt = -1甚至没有编译,这怎么可能呢?我没有看到任何方法在运行时具有负值的UInt,因为如果给定负值,初始化程序将崩溃.我想知道UInt的实际最大值.